【问题标题】:Php Exec external python script - Permission DeniedPhp Exec 外部 python 脚本 - 权限被拒绝
【发布时间】:2015-08-20 13:33:04
【问题描述】:

我无法从 Exec 运行命令行脚本

$exec = exec($command, $output, $return );

我试过 passthru,shell_exec,system 但显然这不是问题。

sudo chown -R www-data:www-data /root/path/nonce.py
sudo chmo 775 /path/nonce.py
sudo chmo 777 /path/nonce.py
sudo chmo 755 /path/nonce.py

没有帮助

exec("python -V 2>&1");

作品

但是

/usr/bin/python /root/path/nonce.py 

 Array ( [0] => /usr/bin/python: can't open file '/root/path/nonce.py': [Errno 13] Permission denied ) 

剂量

在 nginx 和 php5-fpm 上运行

【问题讨论】:

    标签: php python shell exec


    【解决方案1】:

    您需要考虑 Python 脚本路径上每个目录的权限。这意味着:

    /root
    /root/path
    /root/path/nonce.py
    

    root 帐户的权限自然受到限制。如果您查看根目录的主目录:

    $ ls -ld /root
    dr-xr-x---. 9 root root 4096 Aug 20 23:50 root
    

    您会看到只有root 用户和root 组内的用户可以阅读或列出/root 的内容。

    将脚本放在根目录中是个坏主意。假设您的脚本是 CGI 脚本,还有更合适的地方,例如 /var/www/cgi-bin。在我的系统上:

    $ ls -ld /var/www
    drwxr-xr-x. 4 root root 4096 Jul 17 17:22 /var/www
    $ ls -ld /var/www/cgi-bin
    drwxr-xr-x. 2 root root 4096 Jul 17 17:22 /var/www/cgi-bin/
    

    任何用户都可以阅读和列出。您应该将脚本安装在适合 nginx 的目录中。

    【讨论】:

      【解决方案2】:

      路径上的一个目录可能缺少相关用户的 r 权限 - 很可能是 /root

      你能把 python 脚本移动到一个世界可读的目录吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-18
        • 2012-05-01
        • 2014-10-22
        • 1970-01-01
        • 2015-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多