2011-12-02 44 views
0

我试图执行与shell_exec()从PHP shell命令:PHP了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(不在安全模式下)。任何帮助赞赏。

+1

http://php.net/manual/en/function.escapeshellcmd.php – jValdron

+1

请问你的Apache/PHP的用户权限写入到当前目录和/或'test.txt'?看看你的'error.log'。 – mario

+0

你有适当的权限/ SELinux值在目录和文件? – vdbuilder

回答

1

你有没有做过的合法性检查?像这样的东西

<?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 et al.

谁知道,你可能不会给你写信打算,尽量投入的绝对路径测试目录.txt