PHP:mysql_connect()无法通过命令行工作

时间:2008-10-08 03:25:37

标签: php mysql

我有一个调用mysql_connect()来连接MySQL DB的脚本。当我在浏览器中运行脚本时,它可以工作。但是,当我从命令行运行它时,我收到以下错误:

Call to undefined function mysql_connect()

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

php /path/to/script.php

7 个答案:

答案 0 :(得分:11)

它可能使用默认的PHP配置。我之前发现它不使用相同的php.ini或根本不使用它。因此,某些扩展程序将无法启用。

请改为:

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

其中/etc/php.ini是ini文件的路径。你可以通过phpinfo();

找到这个

答案 1 :(得分:3)

检查你的php cmd版本是否真的有mysql支持:

 <? php
  echo php_info()
 ?>

如果没有,那么可能是因为它与您的网络服务器使用的版本不同。

使用“-m”参数运行php以列出所有已编译的模块:

  $ php -m

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

答案 2 :(得分:2)

虽然这可能是一个基本的答案,但请确保您拥有最新的PHP客户端,并确保它正在查看您通过Apache处理的相同PHP文件夹。

如果这不起作用,请尝试使用mysqli,看看它是否是PHP的整个MySQL部分的全局。如果mysqli正常工作而mysql_connect()没有,那么,那就像任何时候一样切换到OO方面: - )

答案 3 :(得分:1)

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

答案 4 :(得分:1)

请确保此行显示在php.ini

延长=激活php_mysql.dll

请注意,命令行中使用的php.ini可能与apache使用的php.ini不同。

答案 5 :(得分: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)

您还应该将其添加到/ etc

中的PHP.ini文件中
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock

这应解决所有问题。

唷..

答案 6 :(得分: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。