如何在 PHP 中覆盖“配置命令”参数


How to override "configure command" parameter in PHP?

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

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

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

答案在这里:

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安全存储库安装的。这导致了一个编译命令,该命令排除了curl和DOMDocument等功能。

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

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

service httpd restart

在这一点上,我能够使用PHP DOMDocument类。

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

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