首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 報錯 Permission denied 快速排查與解決

     編輯:PHP 相關知識

錯誤現象

Apache error_log 出現:(13)Permission denied: exec of '.../index.php' failed

原因分析

Apache 執行身分(通常為 www-data、apache、nobody)對 PHP 腳本檔案缺乏執行權限(x 權限)。PHP 檔案雖不需像 CGI 腳本般必須可執行,但某些配置(如 cgi.force_redirect、suEXEC、或直接以 CLI 模式執行)會檢查執行位元。

解決步驟

  1. 定位檔案:cd /path/to/project
  2. 賦予執行權限:chmod +x index.php 或 chmod 755 index.php
  3. 若整個目錄需執行:chmod -R +x /path/to/project(謹慎使用)
  4. 確認目錄權限:父目錄需有 x 權限才能進入。

最佳實踐:權限最小化原則

  • PHP 檔案:644(擁有者可寫、群組/其他可讀)通常足夠。
  • 目錄:755。
  • 上傳/快取/日誌目錄:擁有者為 Web 使用者,權限 755 或 775(群組可寫)。
  • 避免 777,防止安全風險。

進階排查:SELinux / AppArmor

若權限正確仍報錯,檢查強制存取控制:

# SELinux
getenforce              # 查狀態
ls -Z index.php         # 查安全語境
chcon -R -t httpd_sys_content_t /var/www/html  # 修正語境
setsebool -P httpd_unified 1                    # 允許讀寫統一目錄

# AppArmor
aa-status             # 查狀態
# 編輯 /etc/apparmor.d/usr.sbin.apache2 添加路徑權限

結語

Permission denied 多數為檔案系統權限問題,chmod +x 可快速解決。生產環境請遵循最小權限原則,並檢查 SELinux/AppArmor 策略,避免權限過大帶來安全隱患。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved