
在 Plesk + Ubuntu 环境中,PHP 错误日志默认不生成于网站根目录下的 log/php_errors/,而是统一存放在 /var/www/vhosts/<domain>/logs/ 或系统级路径 /var/www/vhosts/system/<domain>/logs/,需确认 log_errors = On 及日志路径权限配置。
在 Plesk + Ubuntu 环境中,PHP 错误日志默认不生成于网站根目录下的 `log/php_errors/`,而是统一存放在 `/var/www/vhosts/
在 Plesk 管理的 Linux 服务器(如 Ubuntu 20.04)上,PHP 错误日志的行为与 Windows 版 Plesk 存在显著差异:它不遵循 log/php_errors/websitename/php_error.log 这类自定义子目录结构,而是严格遵循 Plesk 的标准化日志布局。即使您已在 php.ini 中启用 log_errors = On,若未指向正确的日志路径或权限不足,错误日志仍不会生成。
✅ 正确的日志存储路径
Plesk 默认将每个域名的 PHP 错误日志写入以下两个位置之一(优先级从高到低):
- 主日志目录(推荐检查):
/var/www/vhosts/example.com/logs/php_error_log
- 系统级备用目录(当主目录不可写时自动回落):
/var/www/vhosts/system/example.com/logs/php_error_log
? 注意:文件名固定为 php_error_log(无 .log 后缀),且不按子目录分站点,每个域名对应一个独立文件。
? 配置验证与调试步骤
确认全局 PHP 设置生效
在 Plesk → Tools & Settings → PHP Settings 中,确保 log_errors 为 On,并检查 error_log 值是否为空(若为空,则使用 Plesk 默认路径;若被手动设为绝对路径,请确保该路径存在且 Web 服务器用户(如 www-data 或 apache)有写权限)。验证当前站点实际生效的 php.ini
创建临时脚本 info.php:<?php phpinfo(); ?>
访问后查找 Loaded Configuration File 和 error_log 行,确认配置来源及日志路径是否被覆盖。
手动触发错误测试日志生成
在网站根目录下创建测试文件 test-error.php:<?php error_log("【PHP Error Log Test】This is a manual log entry.", 0); trigger_error("Intentional E_USER_WARNING for testing", E_USER_WARNING); ?>执行后立即检查上述两个 logs/ 目录中 php_error_log 文件是否更新(使用 tail -f /var/www/vhosts/example.com/logs/php_error_log 实时监控)。
⚠ 关键注意事项
- ❌ 不要手动创建 log/php_errors/ 目录并修改 error_log 指向它——Plesk 不管理该路径,且可能因 SELinux/AppArmor 或权限限制导致写入失败。
- ✅ 所有 logs/ 目录均由 Plesk 自动创建并设置属主(root:psaserv)和权限(750),确保 psaadm 和 Web 服务用户可读写。
- ? 若日志首次未出现,可尝试重启相关服务(非必需,但可排除缓存问题):
sudo systemctl restart plesk-web-stat # 或仅重启 PHP-FPM(如使用): sudo plesk bin php_handler --reread
? 总结
Plesk 在 Linux 下采用集中式、路径标准化的日志策略,而非 Windows 中的嵌套式结构。解决问题的核心在于:信任 Plesk 默认路径、验证配置层级(全局/域名级)、检查文件系统权限。跳过“寻找旧路径”的思维惯性,直接定位 /var/www/vhosts/*/logs/php_error_log,配合 error_log() 函数验证,即可快速定位和启用 PHP 错误日志功能。