【问题标题】:Apache won't parse php pageApache 不会解析 php 页面
【发布时间】:2013-03-29 07:05:38
【问题描述】:

所以我已经在 Ubuntu 机器上安装了 LAMP 用于一些 php 开发,并且一切正常,除了解析和显示 php 页面,浏览器询问我是否要下载它们。我知道这是一个有据可查的问题,而且我已经访问过有关它的 Ubuntu 页面,并了解了所有潜在的原因。我已经安装了libapache2-mod-php5 并在运行sudo a2enmod php5 时得到module php5 already enabled。所以我认为我已经将问题缩小到 php 文件授权问题。

现在我应该指出,这只发生在我修改配置文件以允许在我的/home/public_html 中使用UserDir 之后。使用文件夹/var/www 中的默认配置,php 文件解析得很好,而且仍然可以,只要我给自己 root 访问权限或修改他们的权限。而且我没有更改配置文件中的任何其他内容。

所以,我的问题是,如何检查/修改 php 授权文件?他们在哪?我具体检查什么?我似乎找不到任何关于此的好信息。

【问题讨论】:

  • 当您尝试导航到 PHP 页面时究竟会发生什么?
  • 它要求你下载它们,如果你下载,文件里面的PHP代码被解析还是和里面的PHP代码一起下载?
  • 可能是安装错误,或者需要重启服务..试试我的回答,让我知道它是怎么回事
  • @Havenard 它正在下载文件并在 Gedit 中将其作为文本打开 - 就像我说的那样,我已经知道 php5 已安装并正在工作,因为它仍在 /var/www 目录中解析,只是没有在我的新用户目录中。我认为这是 apache 配置或 php 配置文件中的内容?
  • 编辑您的 httpd.conf 并添加行 AddType application/x-httpd-php .php 它应该可以解决问题。

标签: php linux apache webserver lamp


【解决方案1】:

我在 Centos 7 上运行 PHP 7.0。 我必须在我的/etc/httpd/conf/httpd.conf 文件中加载 PHP 7 模块。

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

和往常一样,对 apache 进行更改后记得sudo service httpd restart

【讨论】:

    【解决方案2】:

    这解决了我的问题,但我就是不知道为什么:

    AddType application/x-httpd-php .php
    

    我在/etc/httpd/conf/httpd.conf中添加了以上内容

    当我编辑 httpd.conf 来配置时,我的问题就出现了

    【讨论】:

      【解决方案3】:

      所以我通过一些真的 乏味的搜索来解决这个问题,我很惊讶该解决方案没有得到更广泛的使用,它真的非常简单。 /etc/apache2/mods-available/php5.conf 文件带有这些行.....

       8     # To re-enable php in user directories comment the following lines
        9     # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
       10     # prevents .htaccess files from disabling it.
       11     <IfModule mod_userdir.c>
       12         <Directory /home/*/public_html>
       13             php_admin_value engine Off
       14         </Directory>
       15     </IfModule>
      

      ...这显然禁用了用户目录中的 php。这些需要注释掉。

      【讨论】:

      • Roger,我们为 laravel 从 php7.1 升级到 7.2 并遇到了这个奇怪的问题。我们的主目录没有解析 php 文件,但我们的主目录 /var/www/.. 工作正常。
      【解决方案4】:

      尝试安装:

      sudo apt-get install php5 libapache2-mod-php5
      

      然后重启服务..

      /etc/init.d/apache2 restart 
      

      或者如果使用httpd:

      /etc/init.d/httpd restart 
      

      然后告诉我这是怎么回事。

      【讨论】:

      • 系统无法识别/etc/init.d/httpd,所以我想我没有运行那个哈哈。其他 2 个运行良好,但问题仍然存在
      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2020-07-11
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      相关资源
      最近更新 更多