一旦php exec命令完成,我在命令行运行一个php页面来更新mysql db。这一直很好。
但是,我刚重新安装了我的服务器,现在当我在命令行上运行脚本时脚本返回以下错误:
Fatal error: Call to undefined function mysql_connect()
脚本在浏览器中运行正常,这意味着安装了mysql。 如何在PHP中启用mysql以从命令行运行?
非常感谢。
答案 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.ini
:php --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文件,但它不是,所以我不得不强制它在脚本的标题行。