安裝 OpenPNE 時檢測 var/ 目錄不可寫,即使 chmod 777 仍失敗。
www-data/apache 用戶執行;PHP-FPM 可能以不同用戶(如 php-fpm)執行。目錄擁有者需為執行 PHP 的用戶。httpd_sys_content_t 僅可讀,需 httpd_sys_rw_content_t 才能寫入。var/ 上層目錄需有 x(進入)權限。# 1. 確認 PHP 執行用戶
php -r 'echo exec("whoami");'
# 或建立 info.php:
# 2. 設定擁有者與權限(假設用戶為 www-data)
chown -R www-data:www-data /path/to/openpne/var
chmod -R 775 /path/to/openpne/var
# 3. SELinux 環境(關鍵)
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/openpne/var(/.*)?"
restorecon -Rv /path/to/openpne/var
# 4. 驗證
php -r 'var_dump(is_writable("/path/to/openpne/var"));'
user/group(如 www-data)。2775 (setgid) 確保新建檔案繼承群組。setfacl -R -m u:www-data:rwx /path/to/var。chmod 777 非萬能藥。檢查「執行用戶、SELinux、父目錄權限」三要素,配合 semanage/setfacl 精準授權,才能徹底解決 OpenPNE 等框架的目錄寫入問題。