Ubuntu系統中,PHP(尤其是PHP-FPM)通常以www-data用戶和組運行。需檢查配置文件確認:
/etc/php/{版本號}/fpm/pool.d/www.conf
(如/etc/php/8.1/fpm/pool.d/www.conf
),找到user
和group
項,確保值為www-data
;/etc/apache2/envvars
,確認export APACHE_RUN_USER=www-data
和export APACHE_RUN_GROUP=www-data
。日志文件(如/var/log/apache2/error.log
、/var/log/php-fpm.log
或自定義路徑)的所有者需為www-data,權限需允許所有者寫入:
sudo chown www-data:www-data /path/to/logfile.log
(替換為實際日志路徑);sudo chmod 660 /path/to/logfile.log
(所有者與組可讀寫,其他用戶無權限);/var/log/php-fpm
):sudo chmod 755 /path/to/log/directory
(確保web進程可進入目錄)。日志文件所在目錄需允許PHP進程(www-data)寫入。例如,若日志存放在/var/log/myapp/
,需執行:
sudo chown -R www-data:www-data /var/log/myapp/ # 遞歸修改所有者
sudo chmod -R 755 /var/log/myapp/ # 遞歸設置目錄權限
避免目錄權限過嚴(如700)導致無法寫入。
確保PHP配置文件(php.ini
)中日志路徑正確且可寫:
php.ini
:php --ini
(顯示路徑,如/etc/php/8.1/apache2/php.ini
);error_reporting = E_ALL
log_errors = On
error_log = /var/log/apache2/php_errors.log # 確保路徑存在且符合上述權限設置
sudo systemctl restart apache2
(Apache)或sudo systemctl restart php8.1-fpm
(PHP-FPM)。若使用PHP-FPM,需單獨配置其日志文件:
/etc/php/{版本號}/fpm/php-fpm.conf
,取消error_log
和access_log
的注釋(刪除行首分號),設置正確路徑;sudo mkdir -p /var/log/php-fpm
sudo chown www-data:www-data /var/log/php-fpm
sudo systemctl restart php{版本號}-fpm
若系統啟用SELinux或AppArmor,可能阻止日志寫入:
sudo setenforce 0
,永久禁用需編輯/etc/selinux/config
(將SELINUX=enforcing
改為disabled
);sudo aa-disable /etc/apparmor.d/usr.sbin/php-fpm{版本號}
(如/etc/apparmor.d/usr.sbin/php-fpm8.1
)。完成上述步驟后,PHP日志應能正常寫入。若問題仍存在,可通過tail -f /var/log/syslog
或journalctl -xe
查看系統日志,定位具體錯誤原因。