【问题标题】:Apache Virtual Host not parsing PHPApache 虚拟主机不解析 PHP
【发布时间】:2012-03-07 12:29:36
【问题描述】:

我决定在我的 Apache 服务器上启用虚拟主机,并选择使其基于端口。

我做的第一件事当然是 RTM。我遵循了found here 的指示。嗯,它奏效了——有点。就虚拟主机运行而言,它确实如此。从 :80 拉取的内容与 :8080 不同。

但是 PHP 不工作。 “原始站点”(端口 80)运行 PHP 非常好。但是,端口 8080 站点将 PHP 发送到浏览器。我在浏览器中什么都看不到,但源代码显示:

<?php
echo "It worked!";
?>

在一些网站上似乎对这个主题的记录非常松散,但要么我在其中找不到解决方案,要么列出的解决方案对我不起作用。

同样,虚拟主机本身运行良好。而 PHP 则不然。

关于它可能是什么的任何想法?我应该提供我的 httpd.conf 文件中的哪些内容,这样我才不会通过复制/粘贴整个内容来解决我的问题?

(对不起,我忘记发布我已经准备好了这些,Phil。添加以避免进一步混淆)

Listen 80
Listen 8080

NameVirtualHost *:80
NameVirtualHost *:8080

<VirtualHost *:80>
    ServerName mysite.com
    DocumentRoot /var/www/vhosts/Site1/httpdocs
</VirtualHost>

<VirtualHost *:8080>
    ServerName mysite.com
    DocumentRoot /var/www/vhosts/Site2/httpdocs
</VirtualHost>

我尝试在标签中添加这个:

AddHandler php5-script .php
AddType text/html .php

...但无济于事。

【问题讨论】:

  • 你在什么操作系统上运行 apache?你能告诉我们你的 php / apache vhost 配置文件吗?
  • 操作系统是 CentOS 5.5。就配置文件而言,我没有任何 .htaccess 文件,所以唯一的管理配置文件(我认为)是 httpd.conf 和 php.ini 文件。除了这些我应该查看的文件之外,还有什么特别的文件吗?其中有哪些配置参数?我认为我的 VirtualHost 行很好,因为不同的端口提供不同的内容,但 PHP 无法正常工作 - 所以我很可能对此大错特错。
  • 您的sites-available 文件夹中应该有一个something.vhost 文件/etc/apache2/sites-available/ 您是否对每个端口都有一个特定的vhost 文件,还是只有一个配置文件?如果您只有一个文件,例如:default 或者您可能只使用 httpd.confg 发布下面的内容 &lt;VirtualHost *:8080&gt;
  • 我(从根目录)搜索任何名为 *.vhost 的文件,但一无所获——与搜索“可用站点”相同。您引用的 apache2 目录也不存在(我想是不同的发行版?)我将编辑我的原始帖子以包含 &lt;VirtualHost&gt; 标签,因为它的格式比这个快速评论响应更好。
  • 我需要以domainname:8080 运行,然后它可能会工作

标签: php apache


【解决方案1】:

此命令在 GNU/Linux 4.4.0-105-generic x86_64

上运行良好

apt-get install libapache2-mod-php

【讨论】:

    【解决方案2】:

    在我的情况下,通过运行以下命令解决了问题:

    apt-get install libapache2-mod-php
    

    【讨论】:

      【解决方案3】:

      就我而言,这是 php.conf 中的默认设置。它说:

      # Running PHP scripts in user directories is disabled by default
      

      检查您的 php.conf(对于 PHP 7.1,它是相应的 /etc/apache2/mods-enabled/php7.1.conf)并评论提到的行:

         root@zxxxx:/home/pxxx/public_html# vi /etc/apache2/mods-enabled/php5.conf
         # 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 On*** -> Turn this option ON
              </Directory>
          </IfModule>
      

      【讨论】:

      • 请多解释一下这是如何解决问题的。
      【解决方案4】:

      在所有尝试之后唯一对我有帮助的东西 添加apache2.conf

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

      【讨论】:

        【解决方案5】:

        这对我的 a2enmod php5 有帮助,如果模块不存在,请输入 apt-get install lamp-server^ 重新安装 lamp-server

        【讨论】:

          【解决方案6】:

          对于我的配置,我必须将此行添加到虚拟主机(在 &lt;Directory&gt; 内):

          AddType application/x-httpd-php .php
          

          【讨论】:

          • 对于那些想要在.html文件中嵌入php代码的人可以做'AddType application/x-httpd-php .php .html .htm'
          【解决方案7】:

          确保以下加载 php 模块的行没有被注释掉 -

          LoadModule php5_module libexec/apache2/libphp5.so
          

          【讨论】:

            【解决方案8】:

            你的回答对我不起作用。

            对于 Ubuntu 12.04:

            sudo a2enmod php5
            sudo service apache2 restart
            

            这样做了。

            来源:https://help.ubuntu.com/community/ApacheMySQLPHP

            【讨论】:

              【解决方案9】:

              这也可能是由于 php 文件使用了短 php 标签 &lt;? 而不是 &lt;?php。默认情况下,php.ini 配置文件中不启用短标签。

              【讨论】:

              • 这听起来像是可以启用这些标签。如果是的话在哪里?
              • 天哪!这完全是我的问题!您可以通过将short_open_tag php.ini 设置为On 来启用它们。
              • 对我来说也一样。在位于 /etc/php/7.4/apache2/php.ini 的文件中启用此设置就足够了
              【解决方案10】:

              这终于让我走上了正确的道路:

              http://www.linuxquestions.org/questions/linux-server-73/php-not-working-on-one-vhost-but-works-on-all-others-851093/

              解决办法如下:

              &lt;Directory&gt; 部分,我添加了以下几行:

              <IfModule sapi_apache2.c>
                  php_admin_flag engine on
              </IfModule>
              <IfModule mod_php5.c>
                  php_admin_flag engine on
              </IfModule>
              

              或者,在我的服务器上复制/粘贴解决方案:

              <Directory "/var/www/vhosts/A2/httpdocs">
                  <IfModule sapi_apache2.c>
                      php_admin_flag engine on
                  </IfModule>
                  <IfModule mod_php5.c>
                      php_admin_flag engine on
                  </IfModule>
              
                  (Other configuration parameters)
              
              </Directory>
              

              【讨论】:

              • 我也必须包含php_admin_flag engine on,因为 PLESK 面板以某种方式在每个新虚拟主机上禁用了它。
              • 如何适配php7?
              【解决方案11】:

              我必须加载一个 centos vm 来检查 apache conf,但在 ubuntu 上,我在 virtualHost 下的配置中有更多信息

                  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                  <Directory "/usr/lib/cgi-bin">
                          AllowOverride None
                          Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                          Order allow,deny
                          Allow from all
                  </Directory>
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-04-21
                • 2012-04-26
                • 2012-09-14
                • 2018-11-27
                • 2011-06-19
                • 2021-08-20
                • 2013-08-29
                相关资源
                最近更新 更多