【问题标题】:Command Line PHP with shell_exec works for root but not others带有 shell_exec 的命令行 PHP 适用于 root 但不适用于其他人
【发布时间】:2010-06-13 00:23:54
【问题描述】:

我有一个非常简单的脚本,用于测试运行 shell_exec(或反引号运算符)是否基本有效:

#!/usr/bin/php5
<?php

echo "This is a PHP script\n";
echo `ls -l /home/stoysnet/`;

除非我以 root 身份运行它,否则它总是给我:

$ ./foo.php 
This is a PHP script

Warning: _shell_exec(): Permission Denied in /home/stoysnet/foo.php on line 5

我尝试过通过 PHP 以几种不同的方式运行它,但我总是遇到同样的错误。但是,当我将脚本放入root:root 拥有的/etc/ 的子目录中并以root 执行时,它可以工作。

什么给了?

更新:澄清一下:

  • 我正在尝试通过命令行以stoysnet 用户身份运行它。我能够执行通过同一会话传递给shell_exec 的命令。
  • 如果我将脚本移动到/etc/somedir/ 并按照root 执行,它会按预期工作。
  • 脚本本身运行,而不是反引号运算符或shell_exec 部分
  • 设置了执行权限,777也不起作用。

【问题讨论】:

  • /home/stoysnet 目录的权限/所有权是什么?为了能够“ls”一个目录(例如:列出/枚举其内容),执行脚本的用户必须对该目录具有执行权限(作为所有者、组或作为“每个人”)。跨度>

标签: php linux permissions command-line-interface


【解决方案1】:

您是否以与stoysnet 不同的用户身份运行此脚本?当您以执行 PHP 脚本的同一用户身份运行 ls -l /home/stoysnet 时会发生什么?

看来您需要以拥有/home/stoysnet/ 权限的用户身份运行脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2011-03-28
    • 2018-12-07
    • 2019-01-03
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多