如何覆盖"配置命令" PHP中的参数?

时间:2013-01-29 21:45:44

标签: php

我正在尝试在已经托管实时网站的网络服务器上部署一些PHP脚本。在我的本地开发环境中,脚本运行正常。但是,在服务器上它们不运行,我通过apache错误日志跟踪问题到PHP无法创建新的DOMDocument对象。我相信我已经将它缩小到phpinfo()中“Configure Command”设置中的一行。在该部分中,我看到--disable-dom以及--without-curl。应该启用这两个以使我的脚本正常工作。

如果我可以在我的脚本中启用这些功能,那就太棒了。否则我可能需要重新编译php,但我不愿意这样做,除非它是绝对必要的。有没有什么方法可以在php.ini中重写这些设置,在脚本本身运行时,或通过其他方法?

编辑:如果有帮助,PHP版本为5.3.3-14.el6_3,它似乎是通过yum安装的。操作系统是Scientific Linux 6.3。

1 个答案:

答案 0 :(得分:1)

答案在这里:

https://serverfault.com/questions/66189/how-to-enable-dom-without-recompiling-php

事实证明,在运行yum install php-xml

之后,我需要在这种情况下重新启动Apache

编辑:以下是对此处发生的事情的更全面的概述:

PHP 5.3.3是通过Scientific Linux的yum安装的。默认情况下,它是从@ sl-security repo安装的。这导致编译命令排除了curl和DOMDocument等功能。

要启用这些功能,我运行了yum install php-xml。然后,我通过检查dom.so中的dom.ini文件来验证是否正在加载相应的/etc/php.d/模块。

我没有意识到我需要重启Apache才能使更改生效。在这个特定的系统上,通过键入以下内容来实现:

service httpd restart

此时我可以使用PHP DOMDocument类。

phpinfo()中的“编译命令”只表示PHP是在没有模块的情况下编译的。可以使用yum在事后添加这些模块。我想如果没有yum,只需要下载相应的.so模块文件并编辑php.ini以确保包含该模块。

但是,当然,关键是要使任何更改生效,您必须重新启动Apache。那部分对我来说并不明显!