PHP 代码无法像在 Debian 上那样在 CentOS 上运行

PHP 代码无法像在 Debian 上那样在 CentOS 上运行

我有一台运行 Apache 和 PHP 5 的 Debian 机器。我有一个运行良好的网站,没有数据库后端只有纯 PHP。

我正在尝试将那个 PHP 网站移到基于 CentOS 的机器上。但我遇到了各种奇怪的错误。

apache2除和 之外还有什么区别httpd?如何在不修改代码的情况下使其工作?

答案1

如果不知道您遇到的具体错误,则很难诊断。但我确信这与一个系统是 CentOS 而另一个系统是 Debian 完全无关;PHP 代码可以在任何可以运行 PHP 代码的系统上运行。

尽管如此,您还是这样说:

apache2除和 之外还有什么区别httpd?如何在不修改代码的情况下使其工作?

Debian ( ) 和 CentOS ( ) 之间在apache2名称上完全没有区别。它们只是系统二进制名称,而 CentOS/RedHat/Fedora 核心开发团队似乎更喜欢Apache 的通用名称,而不是特定于品牌的名称。httpdapache2httpdhttpdapache2

知道这一点后,我相当有信心,如果这是 PHP 代码问题,那么它与 Apache 完全无关。相反,问题可能出在每台机器上运行的 PHP 5 安装版本上。

例如,在 PHP 5.1 中运行良好的代码不一定能在 PHP 5.2、5.3、5.4 等中运行良好……PHP 的每个小版本和主版本都向后兼容早期版本的 PHP,但代码功能可能会有非常细微的变化,这会导致 PHP 5.3 代码在 PHP 5.4 上无法运行。

事实上,根据我的个人经验,我管理的许多网站目前都停留在 PHP 5.3 上,直到核心 PHP 代码更新,使代码与 PHP 5.4“兼容”。这些更改仅涉及调整一些核心功能以适应 PHP 5.3 和 5.4 之间的接口/核心功能变化,但仅此而已;现在还不着急处理它,因为这些系统所用的核心操作系统本身已安装 PHP 5.3 并且运行良好。

我建议您通过检查输出来比较 PHP Apache 插件版本号phpinfo()在两台服务器上查看每台服务器上安装和使用的版本。为此,只需在每台服务器的 webroot 上创建一个名为的文件,phpinfo.php如下所示;我正在使用nano作为文本编辑器,但请随意使用您喜欢的任何文本编辑器:

nano /var/www/phpinfo.php

还请注意,我使用它/var/www/作为您的 webroot 路径;请务必更改它以匹配您实际系统的 webroot。

现在只需将以下代码放入该phpinfo.php文件中:

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

?>

phpinfo.php现在通过如下 URL 用网络浏览器加载;更改主机名以匹配您系统的实际主机名:

http://localhost/phpinfo.php

页面顶部会出现一个巨大的紫色横幅,准确告诉您所使用的 PHP 版本,例如这个,它清楚地显示了我正在测试的系统使用的是 PHP 版本 5.4.10:

“phpinfo()”示例 PHP 版本 5.4.10 横幅。

请注意,虽然大多数已安装的 PHP 版本可能都带有命令行解释器,但该 PHP 命令行解释器与 Apache PHP 插件版本 100% 无关。因此,输出php -v只会为您提供已安装的 PHP 命令行解释器的信息;phpinfo()您应该始终使用它来确认/检查实际运行的 Web 服务器的版本。

相关内容