2012-02-16 125 views
18

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

我做的第一件事当然是RTM。我按照说明found here。那么,它的工作 - 有点。至于运行的虚拟主机,它的确如此。从80开始的内容不同于:8080。

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

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

这个话题似乎在几个网站上非常松散的记载,但任我无法找到他们的解决方案,或解决方案上市ISN不为我工作。

同样,虚拟主机本身运行良好。另一方面,PHP不是。

有关它可能的任何想法?我应该提供哪些来自我的httpd.conf文件的内容,所以我不会通过复制/粘贴整个事物来炸掉我的问题?

(对不起,我忘了后,我有这些到位,菲尔增加,以避免进一步的混乱。)

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 

...但无济于事。

+0

您运行的是什么操作系统阿帕奇? 你能告诉我们你的php/apache虚拟主机配置文件吗? – Erik 2012-02-16 04:51:55

+0

操作系统是CentOS 5.5。至于配置文件去,我没有任何.htaccess文件,所以唯一治理配置文件(我认为)是httpd.conf和php.ini文件。除了我应该看的这些,还有什么特别的文件吗?他们内部有哪些配置参数?我认为我的VirtualHost行很好,因为不同的端口提供不同的内容,但PHP不起作用 - 所以我很可能是错误的。 – user1075581 2012-02-16 04:55:04

+0

你应该在你的'sites-available'文件夹里有'something.vhost'文件'/ etc/apache2/sites-available /'你有没有针对每个端口的特定vhost文件,或者你有一个单独的配置文件?如果你只有一个文件,比如''default'',或者你只使用'httpd.confg'发布下面的内容'' – Erik 2012-02-16 05:06:16

回答

15

这次终于把我在正确的道路上有很多的详细信息:

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

这里的解决方案:

<Directory>节,我包括这些行:

<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> 
+1

我也不得不在'php_admin_flag引擎上加',因为PLESK面板以某种方式在每个新虚拟主机上禁用了它。 – codepushr 2014-09-27 23:35:50

+0

如何适应php7? – maxagaz 2016-10-16 15:29:26

1

我必须加载一个CentOS VM检查了Apache的conf但在Ubuntu我在我的配置下的虚拟主机

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> 
22

这也可能是由于PHP文件使用短的PHP标记<?代替<?php。默认情况下,php.ini配置文件中未启用短标签。

+0

这听起来像那些标签可以启用。如果是,在哪里? – 2016-03-18 02:29:21

+0

哦,伙计!这完全是我的问题!您可以通过将'short_open_tag' php.ini设置为'On'来启用它们。 – 2016-08-12 16:28:10

1

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

LoadModule php5_module libexec/apache2/libphp5.so 
1

在我的情况下,它是php.conf默认设置。它说:

# Running PHP scripts in user directories is disabled by default 

检查php.conf(对于PHP 7.1是相应/etc/apache2/mods-enabled/php7.1.conf)和评论所提到的台词:

[email protected]:/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> 
+0

请详细解释一下这是如何解决这个问题的。 – 2014-06-02 23:06:10

1

对于我的配置,我不得不将此行添加到虚拟主机(内<Directory>):

AddType application/x-httpd-php .php 
+0

适合那些想要嵌入php代码的人。html文件可以做'AddType应用程序/ x-httpd-php .php .html .htm' – 2017-12-02 19:27:13

0

这有助于我的出,如果模块不存在重新安装灯服务器通过键入apt-get install lamp-server^

4

在我的情况下,通过运行apt-get install libapache2-mod-php修复问题。

1

,经过所有帮助过我的唯一尝试 加上apache2.conf

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