从 PHP 5.1.6 升级到 5.2.9 时出现问题

从 PHP 5.1.6 升级到 5.2.9 时出现问题

我有一个运行 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 的来源。Includehttpd.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您添加包含行,但不会删除预先存在的行,因为它在不同的位置或由于某种原因它没有注意到它在文件中。

相关内容