【问题标题】:PHP Script works in the terminal but not the browserPHP 脚本在终端中有效,但在浏览器中无效
【发布时间】:2013-03-11 14:56:30
【问题描述】:

我正在尝试执行exec 命令,但遇到了问题。当我运行以下代码时,当我通过浏览器运行它时它不起作用。但如果我将$str 的输出复制并粘贴到终端中,它就可以正常工作。什么会导致这种情况,我该如何解决?目前我在localhost上运行。

$php_location = "/usr/bin/php";
$data = str_replace("\"", "\\\"", json_encode($_POST));
$cwd = __DIR__;

shell_exec($str = "$php_locataion $cwd/phpExcel.php \"$data\" > /home/ryannaddy/Desktop/phpExcel.txt &");

echo $str;

这是shell_exec正在调用的文件:

<?php
set_time_limit(0);
$args = $argv[1];

$data = json_decode(str_replace("\\\"", "\"", $args), true);
echo "hello!";

【问题讨论】:

    标签: php exec


    【解决方案1】:

    当您通过浏览器运行它时,它会以可能没有正确权限的 Web 服务器用户身份执行。当您在终端中运行它时,它会以您登录的任何用户身份执行。检查 apache(假设您使用的是 apache)用户对脚本 / 目录是否具有正确的权限。

    【讨论】:

    • 如果我这样做 top 它说 apache 正在以 root 运行
    • 基本上 apache 无权写入我的桌面,所以我告诉它写入我的 web 目录。谢谢!
    【解决方案2】:

    问题可能与权限有关。

    当您从 shell 运行某些东西时,它会在您的用户帐户下运行。 Web 服务器将以不同的方式运行,通常对任何东西的权限都很少。要么给网络服务器的帐户适当的权限,要么在不同的帐户下运行服务器(不推荐!)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      相关资源
      最近更新 更多