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

Digital Ocean LEMP栈中Laravel应用执行Python脚本遇权限拒绝问题

解决LEMP环境下Laravel调用Python进程的权限拒绝问题

哎,这种权限坑我在部署Laravel+Python的项目时也踩过!先帮你捋清楚问题出在哪,再一步步解决:

1. 先修正你之前无效的权限命令

你之前执行的find命令有逻辑错误:

sudo find /var/www/sync/Find/*.py -type d -exec chmod 755 {} \;

这里你指定了*.py文件,同时又加了-type d(筛选目录),根本匹配不到任何内容,等于白执行了。先把权限设置正确:

  • 给整个Find目录设置可进入权限:
    sudo chmod -R 755 /var/www/sync/Find/
    
  • 给Python脚本设置可读取/执行权限(如果是直接调用脚本的话):
    sudo chmod -R 755 /var/www/sync/Find/*.py
    

2. 核心:确保PHP-FPM用户拥有权限

LEMP环境中,Laravel是通过PHP-FPM进程运行的,默认用户是www-data(Debian/Ubuntu系统),而不是你登录的root或普通用户。所以必须让www-data对Python脚本及目录有访问权限:

  • 修改目录和文件的所有者/组:
    sudo chown -R www-data:www-data /var/www/sync/Find/
    

3. 检查Laravel调用Python的方式

  • 指定完整的Python解释器路径:PHP-FPM的环境变量和你登录用户的不一样,直接写python可能找不到,要换成绝对路径,比如:
    // Laravel里调用的示例
    $output = shell_exec('/usr/bin/python3 /var/www/sync/Find/process.py');
    
    可以通过which python3命令找到你的Python绝对路径。
  • 检查PHP函数是否被禁用:如果用了exec()、shell_exec()这些函数,要确保php.ini里的disable_functions没有包含它们。你可以通过phpinfo()查看当前配置。

4. 直接测试www-data用户运行脚本

这一步能快速定位是脚本本身的问题还是权限问题:

sudo -u www-data python3 /var/www/sync/Find/process.py

如果这里也报权限错误,那大概率是脚本里访问的其他文件/目录没有给www-data权限(比如脚本要写入某个日志目录,或者读取其他配置文件),针对性调整权限即可。

最后提醒

一定要看完整的错误输出,比如是执行脚本时被拒绝,还是脚本内部访问文件时被拒绝——不同的错误对应不同的解决方向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:12:11