我的整个网站通过浏览器完美运行。我刚刚添加了一个 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))
不知道发生了什么。我已经使用浏览器和 cron 登录了 PHP 版本,结果是一样的:7.3.2-3+0~20190208150725.31+stretch~1.gbp0912bd
cron 有什么不同?我该如何解决这个问题?
尝试在两个php/[version]/apache2
中更改php.ini
文件,使其如下所示:
extension=mysqlnd
extension=mysqli
首先加载mysqlnd
消除了我的 debian VM 上的错误。如果您打算在命令行上运行相同的代码,您可能还希望考虑更改php/[version]/cli/php.ini
。
我有 2 个解决方案。
解决方案一:我注意到在脚本末尾关闭 mysql 连接可以解决问题。
解决方案二:事实证明,/etc/php/7.3/cli/php.ini
和/etc/php/7.3/fpm/php.ini
之间存在差异.
第一个有这样一行:
extension=mysqli
第二个帽子(注意分号(:
; extension=mysqli
添加分号/etc/php/7.3/cli/php.ini
完全解决了我的问题。
从 /etc/php/[version]/cli/php.ini 中注释掉它:
;extension=mysqli
保持原样/etc/php/[version]/apache2/php.ini:
extension=mysqli
重新加载 Apache 2:
sudo systemctl restart apache2
我设法通过在文件夹中的每个php.ini
文件中添加分号来解决此问题/etc
像这样。
;extension=mysqli
我的 php 版本是 7.2
当我跑步时
php -m
PHP 警告:
PHP 启动:无法加载动态库 'mysqli' (已尝试:/usr/lib/php/20170718/mysqli (/usr/lib/php/20170718/mysqli: 无法打开共享对象文件: 没有这样的文件或目录(,/usr/lib/php/20170718/mysqli.so(/usr/lib/php/20170718/mysqli.so: undefined symbol: mysqlnd_global_stats(( 在第 0 行未知
溶液
我只是添加分号以/etc/php/7.2/cli/php.ini
完全解决了我的问题。