PHP 启动:无法加载动态库 'mysqli' 未定义符号:mysqlnd_global_stats

Bor*_*iss 4 php cron mysqli

我的整个网站通过浏览器完美运行。我刚刚添加了一个 cron 作业,每次运行时都会触发此错误:

PHP Startup: Unable to load dynamic library 'mysqli' (tried: /usr/lib/php/20180731/mysqli (/usr/lib/php/20180731/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20180731/mysqli.so (/usr/lib/php/20180731/mysqli.so: undefined symbol: mysqlnd_global_stats))
Run Code Online (Sandbox Code Playgroud)

不知道发生了什么。我已经使用浏览器和 cron 记录了 PHP 版本,结果是一样的:7.3.2-3+0~20190208150725.31+stretch~1.gbp0912bd

cron 有什么不同?我怎样才能解决这个问题?

小智 16

尝试将php.ini两者中的文件更改php/[version]/apache2为类似于以下内容:

extension=mysqlnd
extension=mysqli
Run Code Online (Sandbox Code Playgroud)

首先加载mysqlnd消除了我的 debian VM 上的错误。如果您打算在命令行运行相同的代码,您可能php/[version]/cli/php.ini也希望考虑进行更改。


Bor*_*iss 5

我有 2 个解决方案。

解决方案一:我注意到在脚本末尾关闭mysql连接可以解决问题。

解决方案二:事实证明,/etc/php/7.3/cli/php.ini和之间存在差异/etc/php/7.3/fpm/php.ini

第一个有这一行:

    extension=mysqli
Run Code Online (Sandbox Code Playgroud)

第二个帽子这个(注意分号):

;    extension=mysqli
Run Code Online (Sandbox Code Playgroud)

添加分号以/etc/php/7.3/cli/php.ini完全解决我的问题。