2013-08-24 56 views
65

操作系統和服務器的信息:Apache是​​下載PHP文件,而不是顯示它們

  • 的CentOS 6.4(最終)
  • 的Apache 2.2.15
  • PHP 5.5.1

我以前安裝了PHP 5.3.x,但決定升級。我首先卸載了php 5.3.x,然後安裝了php 5.5.1,但安裝完成後,apache沒有解析php文件,只是下載了它們。我在這裏檢查了類似的問題在stackoverflow,但他們都沒有幫助我到目前爲止。

因爲我有我的httpd.conf和php.conf以下行,應該讓PHP的工作,但備案並不:

AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml 
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml 
AddType application/x-httpd-php-source .phps 
AddHandler php5-script .php 

我真的很感激任何幫助。 謝謝。

編輯:

我在php.conf

<IfModule !worker.c> 
    LoadModule php5_module modules/libphp5.so 
</IfModule> 
<IfModule worker.c> 
    LoadModule php5_module modules/libphp5-zts.so 
</IfModule> 

編輯這些行:

通過消除

AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml 

阿帕奇不再下載文件。現在apache顯示的是源代碼,但並非全部都是它的一部分。我加

AddType text/html .php 

但沒有運氣。

+0

那麼,*你是怎麼安裝的?哪個SAPI?另請參閱[如何檢查哪些apache模塊已啓用/安裝?](http://superuser.com/q/284898) – mario

+2

您的php模塊未運行。 – Sithu

+1

檢查你的'httpd.conf'是否有php模塊被評論 – MaveRick

回答

60

PHP的正確將AddType是應用程序/ X的httpd - PHP

AddType application/x-httpd-php   .php 
AddType application/x-httpd-php-source .phps 

還要確保當你配置Apache的PHP模塊加載

LoadModule php5_module  modules/mod_php55.so 

然後嘗試從另一個瀏覽器查看該頁面 - 我有幾天,chrome固執地緩存結果,並且在另一個瀏覽器中繼續下載源代碼,這很好。

5

請看看你的addtype指令。

它看起來像我一樣告訴瀏覽器它正在發送文件類型的應用程序/ php的腳本與擴展名如.php5。實際上,Apache應該告訴瀏覽器該腳本正在輸出text/html。

請試試這個:

AddType text/html .php 

關於上面,你應該告訴你輸出一個PHP腳本的瀏覽器的建議:這似乎是一個不尋常的想法給我。我搜索了一下,發現網上有很多關於它的討論。顯然,有些情況下你可能想要說你正在發送一個PHP腳本(即使Apache應該執行該腳本併發出text/html),還有一些情況是瀏覽器根本無法識別該特定的Mime類型。

清除瀏覽器緩存總是一個好主意。

如果有幫助,這裏是我運行CentOS 5的服務器上的/etc/httpd/conf.d/php.conf文件的副本。9:

#   
# PHP is an HTML-embedded scripting language which attempts to make it            
# easy for developers to write dynamically generated webpages.             
# 
<IfModule prefork.c> 
    LoadModule php5_module modules/libphp5.so 
</IfModule> 
<IfModule worker.c> 
    LoadModule php5_module modules/libphp5-zts.so 
</IfModule> 

# 
# Cause the PHP interpreter to handle files with a .php extension. 
# 
AddHandler php5-script .php 
AddType text/html .php 

# 
# Add index.php to the list of files that will be served as directory 
# indexes. 
# 
DirectoryIndex index.php 

# 
# Uncomment the following line to allow PHP to pretty-print .phps 
# files as PHP source code: 
# 
#AddType application/x-httpd-php-source .phps 
+0

這很有趣,但在我的情況下,它只輸出整個PHP腳本,這次格式化爲HTML(而不是僅用ASCII格式化) - 沒用!這裏的問題是,PHP沒有正確運行,或者錯誤的頭文件正在被髮送...... –

+0

注意最後一個AddType指令(在上面的例子中被註釋掉了)導致一個.phps文件被打印出來在HTML中。你的Apache配置是否可以打印.php文件? –

2

我以前有類似的問題,從5.3升級到5.4後。但是我的設置看起來有點不同,因爲我正在運行Debian並使用fcgid來服務PHP頁面,而不是PHP5 apache/cgi模塊。 因此,我升級後,它也安裝了php5_cgi,它與我的fcgid設置相沖突,並且不再執行PHP文件。

我不得不禁用Apache模塊,並重新啓動Apache

a2dismod php5_cgi 
/etc/init.d/apache2 restart 

一旦php5_cgi模塊被閃開,fcgid能夠再次爲PHP頁面。

+0

Aww是的,這個棘手的cgi混蛋^^解決了我的問題後,從5.3更新php 5.3也從dotdeb。 –

13

掙扎了很多之後,我終於解決了這個問題。

如果系統提示您下載.php文件而不是執行它,那麼這裏是完美的解決方案:我假設您已經安裝了PHP5並仍然出現此錯誤。

$ sudo su 
$ a2enmod php5 

這就是它。

但是如果你仍然得到錯誤:

Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it 

然後執行以下操作:

原來的文件不應該存放在mods-enabled,而應存放在mods-available。然後應該在mods-enabled中創建一個符號鏈接,指向保存在mods-available中的文件。

先刪除原來的:

$ mv /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/ 

然後創建符號鏈接:

$ ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf 

我希望你的問題就解決了。

+0

請注意,這隻適用於Linux(特別是Debian Linux)。 –

11

我今天遇到這個問題,並沒有任何一種解決方案爲我工作。因此,這裏是另一個可能的原因:

如果你有一個.htaccess文件您的Web內容文件夾的類似

AddHandler x-mapp-php6 .php3 .php4 .php .phtml 

,它可能會導致你的PHP腳本停止工作。在我的情況下,服務器不知道x-mapp-php6類型,因爲那個.htaccess文件是我在轉移網站內容時從不同的Web主機導入的。

剛從.htaccess文件中刪除AddHandler行解決了我。

+0

完美。在我的情況下,它是'AddHandler application/x-httpd-php54 .php54 .php'必須刪除。 –

+0

我遇到了一些問題,但在主目錄(「public_html」web目錄上方的一個目錄)中找到了罪魁禍首.htaccess文件。如果其他人有同樣的問題,請在父目錄中查找.htaccess(設置級聯)。 – Wireblue

+0

我有一個。這樣的htaccess文件我已經從一個虛擬主機服務器拉。它迫使我的本地機器上沒有安裝的PHP版本。因此虛擬主機沒有正確執行PHP文件。 – BrightIntelDusk

2

如果你的.htaccess有這樣的事...... AddHandler的應用程序/ x-的httpd-php53 .PHP .php5 .php4 .php3 然後註釋,然後再試一次刷新這個工作對我來說...

0

從舊版本升級PHP5的時候遇到過類似問題的任擇議定書,到5.5.9,這與薄荷17

我運行的機器上的LAMP安裝在我的本地安裝的版本網絡,我用它來預覽網站的更改,然後將這些更改上傳到實際的實時服務器。所以我保留了實際網站的完美本地鏡像。

升級後,在實際站點上運行並完美顯示的文件將不會顯示,或只會在本地計算機上顯示html。 PHP未被解析。 phpinfo()命令起作用,所以我知道php在其他方面工作。日誌生成沒有錯誤。查看頁面源代碼向我展示了實際的php代碼。

我已經構建了包含下面的代碼test.php的頁面:

<?php phpinfo(); ?>

這個工作。然後我發現,當我將<?php更改爲<?時,該命令不再有效。我的所有php站點都使用<?而不是<?php,這可能不太理想,但這是現實。我通過轉到/ etc/php5/apache2來解決問題,搜索「short_open_tag」並將值從Off更改爲On。

1

我有類似的症狀,但另一種解決方案:在 有/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. 
1

我花了兩天的時間跟蹤這個,發現我把我的PHP腳本放在了錯誤的目錄中。

在我的標準Ubuntu安裝中,我將腳本放在/var/www中。他們應該在/var/www/html

我剛開始使用PHP工作,所以我不知道我的解決方案是否與您所經歷的版本更改有關。

3

我有同樣的問題。 Apache不從一個特定的網站加載php文件,只是下載它。我讀了這篇文章,答案和我所看到的我已經有了這條線到.htaccess文件的最後一個地方:

AddHandler x-mapp-php5.5 .php 

我評論它,一切工作正常。

感謝所有!

1

這解決了這個問題對我來說(我已經安裝了PHP7):

命令和apt-get安裝中的libapache2-MOD-PHP7。0

須藤服務的Apache2重啓

4

這可能是由於你的PHP所需的缺失模塊發生。 假設你已經安裝了PHP7,搜索可使用

sudo apt-cache search php7-* 

上面的命令PHP7模塊將列出所有可用PHP7模塊安裝。 你可以開始安裝模塊,如

sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json 
+0

謝謝了,浪費了一天後,我發現了這一點。 –

1

我有這個問題。事實證明,我已經安裝了nginx和apache,並在啓動時自動啓動。問題在於nginx先綁定了http端口,阻止了apache的啓動。

0

如果上述作品,

嘗試註釋掉行

SetHandler .... 

,並重新啓動Apache使用

/etc/init.d/httpd restart 

它應該工作!

-1

如果你的.htaccess有這樣

AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm 
0

PHP56

VIM什麼/etc/httpd/conf/httpd.conf中

LoadModule php5_module  libexec/apache/libphp5.so 
AddType application/x-httpd-php .php 
AddType application/x-httpd-php-source .phps 
0

我得到了這樣的問題。這是我解決它的方法。 安裝後Apache然後我用這個命令安裝了PHP

sudo apt-get install php libapache2-mod-php 

它執行正確的,但我請求Apache的.PHP文件,它提供了不執行PHP腳本

然後我檢查PHP是否啓用。

$ cd /etc/apache2 
$ ls -l mods-*/*php* 

但它沒有顯示任何結果。我檢查已安裝的PHP軟件包。

$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " " 

不同類型的安裝到我的電腦PHP版本。然後我使用apt-get清除刪除我之前列表中的一些PHP包。

sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json 

我重裝PHP

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql 

確認PHP模塊加載

$ a2query -m php7.0 

如果不啓用:

$ sudo a2enmod php7.0 

重啓的Apache服務器

$ sudo systemctl restart apache2 

最後,我檢查阿帕奇PHP過程

創建一個空文件

sudo vim /var/www/html/info.php 

這些內容加info.php的&保存。

<?php 
    phpinfo(); 
?> 

檢查瀏覽器:

http://localhost/info.php

它顯示correctly.I認爲這將幫助任何人。