命令行PHP mysql_connect()错误

时间:2011-02-25 18:52:27

标签: php mysql command-line

一旦php exec命令完成,我在命令行运行一个php页面来更新mysql db。这一直很好。

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

Fatal error: Call to undefined function mysql_connect() 

脚本在浏览器中运行正常,这意味着安装了mysql。 如何在PHP中启用mysql以从命令行运行?

非常感谢。

4 个答案:

答案 0 :(得分:11)

首先,您可以使用

php -m

从命令行,检查启用了哪些扩展名。

如果mysql不在列表中,则意味着它没有启用/加载 - 这可能是这种情况,在这里。


然后,您将要使用

php --ini

检查PHP读取的.ini个文件。


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

; configuration for php MySQL module
extension=mysql.so

加载mysql扩展程序。


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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

我很久以前遇到过类似的问题(可能是你的问题):

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

  

在这些位置(按顺序)搜索php.ini:

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

  •   
  • PHPRC环境变量。在PHP 5.2.0之前,在下面提到的注册表项之后检查了它。

  •   
  • 从PHP 5.2.0开始,可以为不同版本的PHP设置php.ini文件的位置。按顺序检查以下注册表项:[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xyz],[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ xy]和[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)或--with-config-file-path编译时选项

  •   

我刚刚将PHPRC环境变量修改为php.ini的首选位置。

答案 3 :(得分:0)

对我来说,答案是将我脚本中的第一行从'#!/ usr / bin / php'更改为'#!/ usr / bin / php -c /etc/php.ini'。

即使'php --ini'表示它正在处理正确的.ini文件,但它不是,所以我不得不强制它在脚本的标题行。