【问题标题】:apache2 not executing php scripts on Debian stretchapache2 没有在 Debian 上执行 php 脚本
【发布时间】:2023-03-05 18:22:01
【问题描述】:

最近我将我的 Debian 服务器从 Jessie 升级到了 Stretch (Debian 9.5)。除了 php 生成的网站在 web 浏览器请求时没有执行之外,一切都很顺利。至于http://92.51.132.110/~mlakova/hotglue/hotglue/index.php 的实例,我得到的响应是 php 源代码而不是生成的 html。 如果我 ssh 到服务器并使用 php index.php 执行相同的脚本,我会得到生成的 html,没有错误。

php --version 是 PHP 7.0.30-0+deb9u1 (cli)

apache2 启用了模块php7.0

php5 被卸载并清除

完整的phpinfo(); 可在http://92.51.132.110/info.php 中找到

php 错误日志没有显示任何错误。

任何人都知道为什么会发生这种情况以及如何解决?可能跟从mysql到mariadb的过渡有关吗?

【问题讨论】:

  • 可能的解决方案在这里显示*.com/questions/35928184/php-in-userdir-not-working
  • 确实;就像答案中所说的那样!这是由于 /etc/apache2/mods-available/php7.0.conf 具有“默认禁用在用户目录中运行 PHP 脚本”。所以评论那个指令;禁用 apache 模块 php7.0;重新启动 apache 并启用模块并重新启动就可以了!谢谢!

标签: php linux apache debian-stretch


【解决方案1】:

解决了! 这是由于 /etc/apache2/mods-available/php7.0.conf 有以下几行,只需要注释。

# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
 <Directory /home/*/public_html>
     php_admin_flag engine Off
 </Directory>
</IfModule>

这只是一个禁用apache模块php7.0的问题;重新启动 apache 并启用模块并重新启动完成了这项工作!谢谢!

【讨论】:

    【解决方案2】:

    我也有这个问题。您可以使用这些命令解决此问题。您需要安装 libapache2 mod 并启用 apache PHP 模式。

    安装:

    sudo apt-get install apache2 php7.x libapache2-mod-php7.x 
    

    验证:

    a2query -m php7.x
    

    加载:

    sudo a2enmod php7.x
    

    重启apache:

    sudo service apache2 restart
    

    你可以检查一下。

    【讨论】: