2011-04-08 244 views
8

我有一個apache web服務器。假設這臺服務器的域名是example.com瀏覽器從apache web服務器下載php文件

當我訪問example.com時,那麼index.php文件將正確顯示在瀏覽器中。

但是,當我訪問例如example.com/~用戶,則/home/user/public_html/index.php文件的index.php文件被下載而不是顯示。

我該如何解決這個問題?我改變了"expose_php = Off"php.ini,但沒有任何改變。

+2

什麼Linux發行版,你正在使用?默認情況下,debian/ubuntu禁用用戶公共目錄中的php解析。 – RageZ 2011-04-08 07:09:17

回答

12

如果您在Debian/Ubuntu的看看這個文件/etc/apache2/mods-available/php5.conf

礦看起來像這樣,你可以看到我有評論一些行讓PHP在用戶工作目錄

<IfModule mod_php5.c> 
    <FilesMatch "\.ph(p3?|tml)$"> 
     SetHandler application/x-httpd-php 
    </FilesMatch> 
    <FilesMatch "\.php$"> 
     SetHandler application/x-httpd-php 
    </FilesMatch> 
    <FilesMatch "\.phps$"> 
     SetHandler application/x-httpd-php-source 
    </FilesMatch> 
    # 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_value engine Off 
    # </Directory> 
    #</IfModule> 
</IfModule> 

請注意,編輯,你將不得不重新啓動Apache以使修改生效後的文件,命令重新啓動基於Debian的系統上的Apache是​​:/etc/init.d/apache2 restart

5

希望這樣可以節省別人的頭痛。我知道這個問題很舊,但在搜索這個問題時仍然會出現。

我不確定這是否適用於所有安裝的apache2,但我在ubuntu上運行apache2,並且遇到了我的web瀏覽器下載文件而不是顯示正確索引文件的問題。

問題出在文件中/etc/apache2/mods-enabled/dir.conf 的默認文檔設置在這裏被重寫我在/etc/apache2/httpd.conf

所以只需打開已成立up /etc/apache2/mods-enabled/dir.conf並更改所列文件的順序。

:)

0

我也曾有過類似的經歷 - 一些PHP文件工作正常,但其他人似乎有下載的原始PHP代碼。

在我的情況下,這是由於使用短標籤格式<的破損文件?和? >。這是不推薦的,你可能會發現默認的php.ini被強制關閉。在支持關閉的情況下,php代碼被髮送到瀏覽器,就好像它是HTML一樣。

如果無法避免短標籤(如在我的情況 - 使用短標記的整個代碼庫的遺產),那麼你可以將其設置在php.ini中被允許:

short_open_tag = On 
相關問題