PHP脚本在终端中工作,但在浏览器中不起作用

时间:2013-03-11 14:56:31

标签: php exec

我正在尝试执行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!";

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

该问题可能与权限有关。

当您从shell运行某些内容时,它会在您的用户帐户下运行。 Web服务器将以不同的方式运行,通常只有很少的权限。为Web服务器的帐户提供适当的权限,或者在不同的帐户下运行服务器(不推荐!)。