首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Ubuntu Apache2 無法解析 PHP?修正 apache2.conf 新增 Handler/Type 並去除行首空格

     編輯:程式設計綜合問答

現象

  • 安裝 apache2 php libapache2-mod-php 後,HTML 正常,PHP 檔案直接顯示原始碼或下載。
  • 嘗試修改 /etc/apache2/apache2.conf 加入 AddHandler/AddType 無效。

根因

Apache 設定檔對行首空格極度敏感。若指令前有空白字元,該行會被視為延續行或忽略,導致指令不生效。此外,PHP 模組可能未正確載入。

標準修復步驟

  1. 確認 PHP 模組已載入:
    ls /etc/apache2/mods-enabled/php*.load
    若無,執行 sudo a2enmod php7.4(版本號依安裝而定) → sudo systemctl restart apache2。
  2. 編輯 apache2.conf,確保指令行首無空格:
    sudo nano /etc/apache2/apache2.conf
    在檔案末尾新增(非插入中間):
    AddHandler php7.4-script .php .html
    AddType application/x-httpd-php .php .html
    關鍵:每行第一字元必須是指令字母,前面不可有任何空格/Tab。
  3. 重啟驗證:
    sudo systemctl restart apache2
    建立 /var/www/html/test.php:<?php phpinfo(); ?>,瀏覽器訪問應顯示 PHP 資訊頁。

進階:使用獨立設定檔(更易維護)

sudo nano /etc/apache2/conf-available/php-custom.conf
# 內容同上兩行
sudo a2enconf php-custom
sudo systemctl reload apache2

將自訂設定模組化,避免污染主設定檔,升級套件時不易遺失。

常見誤區

  • 修改 .htaccess 而非主設定:需 AllowOverride All 才生效,效能較差。
  • 混用 php5-script 與 php7-script:需與實際安裝模組名稱一致(a2query -m php 查看)。
  • 忽略 DirectoryIndex:確保 index.php 在 DirectoryIndex 列表中,否則目錄存取不會自動執行 PHP。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved