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

Laravel执行Python3脚本失败:权限拒绝且无法使用sudo

解决Laravel中执行Python脚本权限拒绝(Errno 13)的问题

我刚踩过类似的权限坑,给你几个切实可行的解决思路:

1. 先确认Laravel运行的用户身份

Laravel通常以web服务器的用户身份运行(比如www-data或nginx),首先得明确这个用户是谁:
在Laravel的路由文件里临时加一段代码:

Route::get('/check-run-user', function() {
    return exec('whoami');
});

访问这个路由,就能得到当前执行Laravel的用户名,记下来后面要用。

2. 修复Python脚本及目录的权限

权限拒绝的核心是Laravel运行用户没有访问目标Python脚本的权限,分两步调整:

  • 给脚本所在目录添加执行权限(必须有这个权限才能进入目录访问文件):
    chmod +x /path/to/
    
  • 给脚本文件添加读取权限,如果脚本需要直接执行(比如开头有#!/usr/bin/env python3),再加执行权限:
    chmod +r /path/to/file.py
    # 如果需要执行权限的话
    chmod +x /path/to/file.py
    

3. 调整脚本的所有者(可选但有效)

如果脚本是用root或其他用户创建的,Laravel运行用户可能还是没法访问,这时候把脚本的所有者改成Laravel运行用户:

# 把www-data替换成你查到的实际用户
chown www-data:www-data /path/to/file.py

4. 验证路径是否正确

有时候报错权限拒绝其实是路径写错了!可以在Laravel里用realpath()验证路径是否存在:

dd(realpath('/path/to/file.py'));

如果返回null,说明你写的路径根本不存在,赶紧修正路径。

5. 关于Process组件的工作目录

你设置的工作目录是/public,确保Laravel运行用户对这个目录有访问权限,但这不是当前问题的核心,先解决脚本的权限和路径问题。

记住不要用sudo,这会带来严重的安全风险,从权限本身入手才是正确的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:23:10