[英]PHP: mysql_connect() won't work via command line
我有一个脚本调用mysql_connect()
来连接MySQL数据库。 当我在浏览器中运行脚本时,它可以工作。 但是,当我从命令行运行它时,我收到以下错误:
Call to undefined function mysql_connect()
这似乎完全是矛盾的。 任何人都有任何想法,我可以从命令行运行它。 顺便说一句,我从一个bash shell运行它,如下所示:
php /path/to/script.php
它可能使用默认的PHP配置。 我之前发现它不使用相同的php.ini或根本不使用它。 因此,某些扩展将不会启用。
改为:
php -c /etc/php.ini /path/to/script.php
其中/etc/php.ini
是你的ini文件的路径。 你可以通过做一个phpinfo();
来找到它phpinfo();
检查你的php cmd版本是否真的有mysql支持:
<? php echo php_info() ?>
如果没有,那么可能是因为它与您的Web服务器使用的版本不同。
使用“-m”参数运行php以列出所有已编译的模块:
$ php -m
你应该看到“mysql”模块。 如果没有,那么我想php cmd版本还没有使用--with-mysql编译,或者“configure”脚本由于某种原因无法包含它。
虽然这可能是一个基本的答案,但请确保您拥有最新的PHP客户端,并确保它正在查看您通过Apache处理的相同PHP文件夹。
如果这不起作用,尝试使用mysqli,看看它是否是PHP的整个MySQL部分的全局。 如果mysqli有效,而mysql_connect()没有,那么,那就像任何转到OO方面一样好的时间:-)
php-cli.ini可能是您的命令行php解释器正在使用的文件。
请确保此行出现在php.ini中
延长=激活php_mysql.dll
请注意,命令行中使用的php.ini可能与apache使用的php.ini不同。
运行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
这应该解决所有问题。
唷..
我的系统是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现在已加载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.