我有一个脚本,它调用mysql_connect()
连接到MySQL数据库。当我在浏览器中运行脚本时,它可以工作。但是,当我从命令行运行它时,我收到以下错误:PHP:mysql_connect()将无法通过命令行工作
Call to undefined function mysql_connect()
这似乎完全是自相矛盾的。任何人都可以从命令行运行它。顺便说一句,我从一个bash shell中运行它像这样:
php /path/to/script.php
我有一个脚本,它调用mysql_connect()
连接到MySQL数据库。当我在浏览器中运行脚本时,它可以工作。但是,当我从命令行运行它时,我收到以下错误:PHP:mysql_connect()将无法通过命令行工作
Call to undefined function mysql_connect()
这似乎完全是自相矛盾的。任何人都可以从命令行运行它。顺便说一句,我从一个bash shell中运行它像这样:
php /path/to/script.php
虽然它可能是一个初步的答案,请确保您有最最新的PHP客户端,并确保它看起来在同一PHP文件夹你正在通过Apache工作。
如果这不起作用,请尝试使用mysqli进行游戏,并查看它是否全局适用于PHP的整个MySQL部分。如果mysqli工作,并且mysql_connect()没有那么好,那么,就像任何时候开到OO那边一样好:-)
它可能使用默认的PHP配置。我以前发现它不使用相同的php.ini或根本不使用它。因此一些扩展将不会启用。
而是执行此操作:
php -c /etc/php.ini /path/to/script.php
哪里/etc/php.ini
是通向你的ini文件。你可以通过做一个phpinfo();
php-cli.ini可能是你的命令行php解释器正在使用的文件。
请确保该行出现在php.ini
扩展=激活php_mysql.dll
请注意,在命令行中使用php.ini中可能是从Apache所使用的php.ini文件不同。
检查,如果你PHP的CMD版本实际上已经支持MySQL:
<? php echo php_info() ?>
如果不是,那么很可能这是因为它是一个不同的版本比你的Web服务器使用的一个。使用“-m”参数,以列出所有的编译的模块
运行PHP:
$ php -m
您应该看到“mysql的”模块。如果没有,那么我猜php cmd版本没有使用--with-mysql编译,或者“configure”脚本由于某种原因无法包含它。
当您运行Mac OS X和MAMP时,可能会出现此问题。命令行版本尝试使用MAC OS X版本,该版本默认情况下不会加载php.ini。
您可以检查使用以下命令:
php --ini
查看丢失的配置文件?
Configuration File (php.ini) Path: /etc
Loaded Configuration File: !!! THE CONFIG FILE IS MISSING HERE !!!
Scan for additional .ini files in: /Library/Server/Web/Config/php
Additional .ini files parsed: (none)
你所要做的就是加载php。您所选择的ini和它复制到你的命令行解释器的默认位置是/ etc然后再次运行上面的命令,你应该看到php.ini文件被加载应该是这样的:
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /Library/Server/Web/Config/php
Additional .ini files parsed: (none)
你也应该将其添加到在php.ini文件/ etc
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
这应该可以解决所有问题。
phew ..
我的系统是CentOS。 在我的情况下,mysql.so的路径不正确。
当我键入
php -m
有没有mysql。
我在原来的/etc/php.d/mysql.ini 只有一个行:
extension=mysql.so
于是我就用命令:
rpm -ql php-mysql | grep mysql.so
找出正确的路径,这是
/usr/lib64/php/modules/mysql.so
然后我取代了线:
extension=/usr/lib64/php/modules/mysql.so
然后
service httpd restart
和
php -m
MySQL是现在加载。
对不起,尝试过,但我仍然得到相同的错误。 – CoolGravatar 2008-10-08 03:44:33
确保这是您的php.ini文件的路径。 – 2008-10-08 03:48:06
嗯......它可以工作,但它仍然没有意义。 – CoolGravatar 2008-10-08 03:53:36