命令行PHP mysql_connect()错误

命令行PHP mysql_connect()错误,php,mysql,command-line,Php,Mysql,Command Line,我正在从命令行运行一个php页面,以在php exec命令完成后更新mysql数据库。这一直运作良好 但是,我刚刚重新安装了服务器,现在在命令行上运行脚本时,脚本返回以下错误: Fatal error: Call to undefined function mysql_connect() 脚本在浏览器中运行良好,这意味着mysql安装正常如何使PHP中的mysql能够从命令行运行? 非常感谢。首先,您可以使用 php -m 从命令行,检查启用了哪些扩展 如果mysql不在列表中,这意味着它

我正在从命令行运行一个php页面,以在php exec命令完成后更新mysql数据库。这一直运作良好

但是,我刚刚重新安装了服务器,现在在命令行上运行脚本时,脚本返回以下错误:

Fatal error: Call to undefined function mysql_connect() 
脚本在浏览器中运行良好,这意味着mysql安装正常如何使PHP中的mysql能够从命令行运行?


非常感谢。

首先,您可以使用

php -m
从命令行,检查启用了哪些扩展

如果mysql不在列表中,这意味着它没有被启用/加载——这里可能就是这样


然后,您将要使用

php --ini
检查PHP读取的
.ini
文件


一旦发现使用了哪个
php.ini
文件,就必须对其进行编辑,并添加如下内容:

; configuration for php MySQL module
extension=mysql.so
加载
mysql
扩展


根据您的发行版,每个扩展名可能是一个
.ini
文件(例如,Ubuntu就是这样做的)


如果是这种情况,您还可以在其他文件旁边创建一个新的
.ini
文件(例如
mysql.ini
),并将我发布的两行代码放入该新文件中。

检查PHP可执行文件的路径。您没有提到它在哪个操作系统下,但是,例如,在OSX下运行
php
执行内置的php解释器。如果您使用的是MAMP,则需要运行
/Applications/MAMP/bin/php5.2/bin/php
(或任何您的路径)来模拟浏览器中运行的内容


相应地更改web服务器的php路径(基于AMP安装、操作系统等)。

不久前我遇到了类似的问题(可能对您来说也是同样的问题):

我在Apache的配置中指定了我喜欢的php.ini。但是,这显然不会影响CLI中的php。检查php使用的
php.ini
php--ini
。修改它或通过更改以下部分来选择其他配置文件:

在以下位置搜索php.ini(按顺序):

  • SAPI模块特定位置(Apache 2中的PHPIniDir指令,CGI和CLI中的-c命令行选项,NSAPI中的php_ini参数,THTTPD中的php_ini_PATH环境变量)

  • PHPRC环境变量。在PHP5.2.0之前,这是在下面提到的注册表项之后检查的

  • 从PHP5.2.0开始,可以为不同版本的PHP设置PHP.ini文件的位置。按顺序检查以下注册表项:[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]、[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]和[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x],其中x、y和z表示PHP主要版本、次要版本和发布版本。如果这些键中有IniFilePath的值,那么找到的第一个值将用作php.ini的位置(仅限Windows)

  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP],IniFilePath的值(仅限Windows)

  • 当前工作目录(CLI除外)

  • web服务器目录(用于SAPI模块)或PHP目录(在Windows中为其他目录)

  • Windows目录(C:\Windows或C:\winnt)(适用于Windows)或--带有配置文件路径编译时选项


我刚刚将PHPRC环境变量修改为我喜欢的
php.ini

位置。对我来说,答案是将脚本中的第一行从“#”改为“#”/usr/bin/php“到”#/usr/bin/php-c/etc/php.ini”


尽管'php--ini'表明它正在处理正确的.ini文件,但事实并非如此,因此我不得不将其强制放在脚本的标题行。

感谢您的回复。我试过这个,但没有任何运气。问题是,当我在CLI中运行php--ini时,is声明我的php.ini配置文件位于/usr/local/lib中,这是不正确的。请看我的新问题:。这是一个救生员。对我来说,MySQL抛出了一个
扩展未找到
错误,但只有在命令行上运行并将这一行添加到php.ini时才修复了该问题。注意:现在PHP7已退出,请确保您的命令行使用的php安装与您配置的相同。在命令行中使用
php--ini
时,我注意到它使用的是PHP7,而我的站点上还没有使用它。将命令从
php/foo/bar.php
切换到
php5.6/foo/bar.php
修复了我的错误