【问题标题】:PHP not being interpreted by apache2(on Debian)apache2 不解释 PHP(在 Debian 上)
【发布时间】:2014-09-11 04:27:39
【问题描述】:

我目前的 apache 服务器出现问题。 在我升级我的系统后它不会解释 php

    apt-get update
    apt-get upgrade
    apt-get dist-upgrade

顺便说一句,我使用的是 Debian(Linux 版本 2.6.32-042stab090.3)。

无论如何,我一直在寻找各种网站以找到解决方案。 他们大多说在我的 http.conf/apache2.conf 中缺少包含要由 php5 解释器解释的 php 文件。他们建议我应该添加

    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>

到我的配置文件和其他变体,但它们都不起作用。是的,我在编辑配置文件后重新启动了 apache2 服务器。 他们还说 php5.conf 的正则表达式可能是错误的,并导致解释器不关心真正的 php 文件或其他任何东西。 还有一些人建议我应该跑步

    sudo apt-get purge libapache2-mod-php5
    sudo apt-get remove libapache2-mod-php5

这样 php 的配置文件就被正确重建了,但是因为我运气不好,它也显示了一个错误:

    Err http://ftp.us.debian.org/debian/ testing/main libapache2-mod-php5filter amd64 5.6.0~rc2+dfsg-1
      404  Not Found [IP: 128.61.240.89 80]
    Unable to correct missing packages.
    E: Failed to fetch http://ftp.us.debian.org/debian/pool/main/p/php5/libapache2-mod-php5filter_5.6.0~rc2+dfsg-1_amd64.deb  404  Not Found [IP: 128.61.240.89 80]

然后有另一个建议说我应该检查 apache2 的 error.log,但它只显示对我没有帮助的消息。

    [Sun Jul 20 01:19:27.468164 2014] [mpm_prefork:notice] [pid 31052] AH00163: Apache/2.4.9 (Debian) PHP/5.6.0RC2 configured -- resuming normal operations
    [Sun Jul 20 01:19:27.468204 2014] [core:notice] [pid 31052] AH00094: Command line: '/usr/sbin/apache2'
    [Sun Jul 20 16:22:25.052630 2014] [mpm_prefork:notice] [pid 31052] AH00169: caught SIGTERM, shutting down

很抱歉把这个问题写得这么长,但我不想得到不必要的答案,所以我决定尽可能详细地回答这个问题。此外,如果有语法错误,我为他们感到抱歉。 如果您能帮助我或至少提出任何听起来有帮助的建议,我将非常高兴。

感谢阅读。

此致 Japu_D_Cret

【问题讨论】:

    标签: php apache apache2 debian


    【解决方案1】:

    通过在 apache2.conf 中将 LogLevel warn 更改为 LogLevel debug,使您的错误日志更加详细。

    我希望你的错误日志会更有帮助。

    【讨论】:

    • 唯一的新东西是它显示了客户需要哪些文件,检查pastebin上的error.logpastebin.com/cagqmAiH
    • 在 debian 文档中看到:除非您特别需要过滤模块支持,否则您很可能应该安装 libapache2-mod-php5
    • 正如我已经提到的 libapache2-mod-php5 已经安装,我试图清除并删除它,但它不起作用。问题仍然存在。
    【解决方案2】:

    从 wheezy 升级到 jessie 后,我遇到了完全相同的问题。 除了他们从 apache 2.2 迁移到 2.4 导致我遇到一堆不兼容和错误之外,php 也不再被解释了。

    但正如他们所说,最大的秘密是显而易见的,这就是我修复它的方法(孩子们很容易!)。

    我正在用简短的脚本验证 php 的可用性

    <?
     phpinfo();
    ?>
    

    经过几个小时的脑细胞损伤和老化,我将其替换为:

    <?php
     phpinfo();
    ?>
    

    一切都像魅力一样运作。

    所以这是一个 PHP 问题,而不是 APACHE。这是因为显然在 jessie 中默认禁用了短标签。查看 php.ini (/etc/php5/apache2/php.ini) 中的 'short_open_tag' 参数,并将其设置为 On,最终或在脚本中使用完整标记 ( &lt;?php)。我知道这是一个仅为向后兼容而保留的参数,但仍然很难找到它。

    【讨论】:

    • 同样适用于 nginx + php-fpm。
    【解决方案3】:

    您应该已经编辑了 php.ini 文件并搜索了 short_open_tag = Off(将 Off 更改为 On),然后重新启动 apache2 服务。如果该标签已关闭,则必须使用

    干杯,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2018-11-03
      • 1970-01-01
      • 2017-01-13
      • 2019-02-18
      • 2016-05-08
      • 2021-10-08
      • 1970-01-01
      相关资源
      最近更新 更多