命令行php mysqli失败,但可通过web服务器工作,并在本地

命令行php mysqli失败,但可通过web服务器工作,并在本地,php,shell,mysqli,centos,Php,Shell,Mysqli,Centos,我有一个shell脚本,它在解析文本文件后调用php脚本在数据库中插入记录。当它调用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的local中失败,在我将socket参数添加到mysqli调用后,它在local中工作这对本地数据库有效 $mysqli =

我有一个shell脚本,它在解析文本文件后调用php脚本在数据库中插入记录。当它调用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的local中失败,在我将socket参数添加到mysqli调用后,它在local中工作这对本地数据库有效

$mysqli = new mysqli("localhost", "user", "pass", "mydb", 3306, "/tmp/mysql.sock");
我部署到Linux服务器(安装了带有PHP5.3.x的“yum install php”的CentOS6)。我更改了与远程db服务器的连接,因此删除了“/tmp/mysql.sock”,因为此服务器上没有运行db

调用php以执行脚本的Shell脚本:

php -c "/etc/php.ini" -f "/path/to/php/file.php"
考虑到我没有在本地运行mysql,如何让它识别mysqli库并执行。在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()。

PHP CLI将根据Web服务器使用的环境设置拥有自己的环境设置。如果CLI环境中没有mysqli,则会导致此问题。

我发现mysqli未与PHP一起安装,并运行以下命令:

>php -i
这返回了phpinfo(),没有发现mysqli。然后,我运行'yum'命令安装php mysqli:

>yum install php-mysqli

在这之后,脚本成功地工作了。希望这有助于其他可能遇到类似问题的人。

通常不要使用
mysql.*
。谢谢Mike。知道如何添加到CLI环境吗?@MikeS。您是否了解了如何添加到CLI环境?“我现在也面临着同样的挑战。”雅莉亚,看看公认的答案。根据您的操作系统,您可能需要使用不同的软件包安装程序,如aptitude@MikeBrant:我在UbuntuLTS14.04操作系统上安装了mysqli,使用的是:
sudo-apt-get-install-php5-mysql
。同样的挑战依然存在。