2012-02-16 69 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>