我有一个运行 CentOS 5 的 Web 服务器,它运行的是 php 5.1.6,因此我下载并编译了 5.2.10 的源代码,然后重新启动了服务器,但 phpinfo() 仍然返回 5.1.6。
但是当我在这个 PHP 上进行版本切换时,我得到了
$ /usr/local/bin/php -v
PHP 5.2.9 (cli) (built: May 26 2009 10:17:42)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
有一个几乎完全相同的问题这里几乎每个答案都指出可以通过在 httpd.conf 文件中执行以下操作来解决这个问题:
LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so
我这样做了,当我重新启动 apache 时,我得到以下信息:
Stopping httpd: [ OK ]
Starting httpd: [Fri Sep 11 14:59:28 2009] [warn] module php5_module is already loaded, skipping
[ OK ]
这显然意味着 php 模块被调用了两次,但搜索 httpd.conf 文件并没有发现对该模块的第二次调用。php 模块可以从其他地方调用吗?在哪里?有人知道我下一步该尝试什么吗?我将不胜感激。
答案1
/etc/apache/conf.d
在或类型目录中查找 PHP 加载器。通过查看中的指令,/etc/httpd/conf.d
您可能可以找到 PHP 的来源。Include
httpd.conf
答案2
除了 httpd.conf 文件之外,CentOS Apache 设置还会从位于 /etc/httpd/conf.d 中的文件加载配置指令。请检查您是否有名为 /etc/httpd/conf.d/php.ini 或类似名称的文件。
如果出现这种情况,则可能意味着您从 RPM 安装了其他版本的 PHP。请考虑将其删除以防止发生其他冲突。
答案3
在安装新版本之前,您是否从 CentOS 卸载了 php 包?安装后还要检查 /libphp5.so 文件的保存位置。
我建议安装最近发布的 PHP 5.2 rpm 包Rackspace 存储库。
答案4
libphp5.so
您的 中有两行包括httpd.conf
。只需在您喜欢的编辑器中打开它并搜索php5
,然后继续搜索,直到找到该行的所有实例。
确保只加载您实际想要使用的模块 - 当然,只加载一次。
如果您正在升级并且使用与要升级的 PHP 一起提供的安装过程,则经常会出现此错误,它会尝试为libphp5.so
您添加包含行,但不会删除预先存在的行,因为它在不同的位置或由于某种原因它没有注意到它在文件中。