2008-10-08 12 views
10

我有一个脚本,它调用mysql_connect()连接到MySQL数据库。当我在浏览器中运行脚本时,它可以工作。但是,当我从命令行运行它时,我收到以下错误:PHP:mysql_connect()将无法通过命令行工作

Call to undefined function mysql_connect() 

这似乎完全是自相矛盾的。任何人都可以从命令行运行它。顺便说一句,我从一个bash shell中运行它像这样:

php /path/to/script.php 

回答

2

虽然它可能是一个初步的答案,请确保您有最最新的PHP客户端,并确保它看起来在同一PHP文件夹你正在通过Apache工作。

如果这不起作用,请尝试使用mysqli进行游戏,并查看它是否全局适用于PHP的整个MySQL部分。如果mysqli工作,并且mysql_connect()没有那么好,那么,就像任何时候开到OO那边一样好:-)

10

它可能使用默认的PHP配置。我以前发现它不使用相同的php.ini或根本不使用它。因此一些扩展将不会启用。

而是执行此操作:

php -c /etc/php.ini /path/to/script.php 

哪里/etc/php.ini是通向你的ini文件。你可以通过做一个phpinfo();

+0

对不起,尝试过,但我仍然得到相同的错误。 – CoolGravatar 2008-10-08 03:44:33

+0

确保这是您的php.ini文件的路径。 – 2008-10-08 03:48:06

+0

嗯......它可以工作,但它仍然没有意义。 – CoolGravatar 2008-10-08 03:53:36

1

php-cli.ini可能是你的命令行php解释器正在使用的文件。

1

请确保该行出现在php.ini

扩展=激活php_mysql.dll

请注意,在命令行中使用php.ini中可能是从Apache所使用的php.ini文件不同。

3

检查,如果你PHP的CMD版本实际上已经支持MySQL:

 
<? php 
    echo php_info() 
?> 

如果不是,那么很可能这是因为它是一个不同的版本比你的Web服务器使用的一个。使用“-m”参数,以列出所有的编译的模块

运行PHP:

 
    $ php -m 

您应该看到“mysql的”模块。如果没有,那么我猜php cmd版本没有使用--with-mysql编译,或者“configure”脚本由于某种原因无法包含它。

0

当您运行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 ..

0

我的系统是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是现在加载。