PHP命令行mysqli的失败,但通过Web服务器工作并在当地工作(Command line php

2019-06-26 10:40发布

我有一个调用一个PHP脚本解析文本文件后,插入数据库记录的shell脚本。 当调用PHP脚本,它无法找到的mysqli我得到的错误:

PHP Fatal error:  Class 'mysqli' not found in /path/to/php/file.php on line 5

这种失败在本地上的MacBook Pro与Nginx的和PHP-FPM和MySQL的5.5.x后,我加入了插座参数去mysqli的呼叫时,它在本地工作。 这个工作与本地数据库!

$mysqli = new mysqli("localhost", "user", "pass", "mydb", 3306, "/tmp/mysql.sock");

我部署到Linux服务器(CentOS6有“百胜安装PHP”用PHP 5.3.x)安装。 我换到远程数据库服务器的连接,所以放弃了“/tmp/mysql.sock”,因为数据库在此服务器上没有运行。

shell脚本调用PHP执行脚本:

php -c "/etc/php.ini" -f "/path/to/php/file.php"

由于我不是在本地运行mysql的,我怎么得到它的认可和mysqli lib和执行。 这是对CentOS6。 我甚至尝试添加mysqli.so为php.ini文件,并得到了以下错误:

[mike@app2 myapp]# php -version
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' - /usr/lib64/php/modules/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Feb  2 2012 23:47:49) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

感谢您解决这个任何帮助。 一般情况下我使用mysql(查询),但需要mysqli的()为脚本中的一些预处理语句和其他位。

Answer 1:

我发现的mysqli不与PHP安装并运行下面的命令:

>php -i

这返回的phpinfo()函数,发现没有提到的mysqli的。 然后我跑了“百胜”命令来安装PHP的mysqli的:

>yum install php-mysqli

在此之后,脚本成功合作。 希望这有助于其他可能遇到类似。



Answer 2:

PHP CLI将与由Web服务器使用它自己的环境设置。 如果你没有在命令行环境中,将导致此问题可用的mysqli。



文章来源: Command line php mysqli fails but works via web server and works in local