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

“如何覆盖”;配置命令";PHP中的参数?,php,Php,我正在尝试在一个Web服务器上部署一些PHP脚本,该服务器已经托管了一个实时网站。在我的本地开发环境中,脚本运行良好。但是,在服务器上它们不运行,我通过apache错误日志跟踪到PHP无法创建新的DOMDocument对象的问题。我相信我已经将其缩小到phpinfo()中“Configure Command”设置中的一行。在那一节中,我看到了--禁用dom,以及--不使用curl。为了使脚本正常工作,这两个选项都应该启用 如果我能在脚本中启用这些功能,那就太好了。否则我可能需要重新编译php,但

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

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

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

答案如下:

在这种情况下,我只需要在运行
yum安装php-xml

编辑:这里有一个更全面的概述:

PHP 5.3.3是通过Scientific Linux的
yum安装的。默认情况下,它是从@sl security repo安装的。这导致了一个compile命令,它排除了curl和DOMDocument等特性

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

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

服务httpd重启

此时,我能够使用PHP DOMDocument类

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


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

无法在脚本中启用它们。您可能会找到一个用于安装的模块。你用什么操作系统?@BartFriederichs谢谢你的建议!我已经通过yum安装了php-xml,但它似乎不起作用。您尝试过这个PEAR模块吗?@BartFriederichs它已经过时了,因为我使用的是5.3.3。不过,XML_XPath的最新版本是5.0.0,谢谢!我想你必须重建PHP然后。。。或者,您可以为发行版找到一个没有设置
--disable dom
的版本。