PHP shell_exec不接受'>'参数


PHP shell_exec not accepting '>' parameter

我试图从PHP执行shell命令与shell_exec():

$output = shell_exec('python test.py > test.txt');

当我从命令行运行python test.py > test.txt时,它可以工作。当我尝试通过PHP做同样的事情时,没有创建test.txt文件,命令似乎不运行。

shell_exec()工作良好,当我不使用>,例如

$output = shell_exec('python test.py');
echo $output;

我使用PHP 5.3.6,(不是在安全模式下)。

你做过理智测试吗?像这样

<?php
shell_exec('echo blah > /tmp/blah.txt;');
if(trim(file_get_contents('/tmp/blah.txt')) == 'blah')
    echo 'It works' . PHP_EOL;
else
    echo 'Something is wrong' . PHP_EOL;

同样,在最糟糕的情况下,一个简单的解决方案应该可以解决这个问题。

<?php
file_put_contents('test.txt', exec('python test.py'));

如果你需要缓冲大文件的内容,你可以得到w/fwrite等。

谁知道呢,你可能没有写到你想写的目录,试着把一个绝对路径放到test.txt