You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel部署在Nginx服务器无法读取指定路径的证书文件

问题排查:Laravel部署Nginx后证书文件无法读取

1. 文件权限问题

服务器上Nginx进程的运行用户(通常为www-data或nginx)大概率没有证书文件的读取权限。

  • 先检查文件权限详情:
    ls -l /var/www/laravel-app/app/Certificates/
    
  • 给文件设置正确权限,确保Web进程可读:
    sudo chmod 644 /var/www/laravel-app/app/Certificates/*.pem /var/www/laravel-app/app/Certificates/*.crt
    sudo chown -R www-data:www-data /var/www/laravel-app/app/Certificates/
    

2. SELinux限制(仅CentOS/RHEL系列系统)

如果服务器开启了SELinux,会默认阻止Web进程读取非标准目录的文件。

  • 检查SELinux状态:
    sestatus
    
  • 若处于enforcing模式,给证书目录添加Web可读的SELinux上下文:
    sudo chcon -R -t httpd_sys_content_t /var/www/laravel-app/app/Certificates/
    

3. 文件实际存在性验证

虽然返回的路径看起来正确,但需确认文件确实存在于对应位置:

  • 执行命令直接验证文件是否存在:
    ls /var/www/laravel-app/app/Certificates/test2-2023_cert.pem /var/www/laravel-app/app/Certificates/curl-bundle.crt
    
    如果提示"No such file or directory",说明文件未上传到指定路径,或路径拼写有误。

4. Laravel配置缓存问题

服务器端可能缓存了旧配置,导致新的路径未生效:

  • 清除配置和缓存:
    php artisan config:clear
    php artisan cache:clear
    
    生产环境可重新生成配置缓存:
    php artisan config:cache
    

5. 路径拼接严谨性优化

当前.env中路径以/开头,和app_path()拼接后虽显示正常,但存在冗余风险,建议调整写法:

  • 修改.env文件,去掉路径开头的/:
    PEM=Certificates/test2-2023_cert.pem
    CRT=Certificates/curl-bundle.crt
    
  • 修改config/services.php的路径拼接逻辑:
    'pem' => app_path(env('PEM', '')),
    'crt' => app_path(env('CRT', ''))
    

内容的提问来源于stack exchange,提问作者Ven Nilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:30:52