Mik*_* S. 3 php shell mysqli centos
我有一个shell脚本调用php脚本在解析文本文件后在数据库中插入记录.当它调用PHP脚本时,我得到错误,它无法找到mysqli:
PHP Fatal error:  Class 'mysqli' not found in /path/to/php/file.php on line 5
这在使用Nginx和PHP-FPM以及Mysql 5.5.x的Macbook Pro上本地失败,并且在我将套接字参数添加到mysqli调用之后,它在本地工作. 这适用于本地数据库!
$mysqli = new mysqli("localhost", "user", "pass", "mydb", 3306, "/tmp/mysql.sock");
我部署到Linux服务器(CentOS6,安装了带有PHP 5.3.x的'yum install php').我更改了与远程数据库服务器的连接,因此删除了"/tmp/mysql.sock",因为db没有在此服务器上运行.
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()来处理脚本中的一些预处理语句和其他位.
我发现mysqli没有安装PHP并运行以下命令:
>php -i
这返回了phpinfo()并且没有提到mysqli.然后我运行'yum'命令来安装php-mysqli:
>yum install php-mysqli
在此之后,脚本成功运行.希望这有助于其他可能遇到类似问题的人.