我有一个调用mysql_connect()
来连接MySQL DB的脚本。当我在浏览器中运行脚本时,它可以工作。但是,当我从命令行运行它时,我收到以下错误:
Call to undefined function mysql_connect()
这似乎完全是矛盾的。任何人都有任何想法,我可以从命令行运行它。顺便说一句,我是这样从bash shell运行它:
php /path/to/script.php
答案 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。