Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
司令部赢得';无法使用PHP exec(),但如果通过提示符运行,则运行良好_Php_Linux_System_Exec_Shellexecute - Fatal编程技术网

司令部赢得';无法使用PHP exec(),但如果通过提示符运行,则运行良好

司令部赢得';无法使用PHP exec(),但如果通过提示符运行,则运行良好,php,linux,system,exec,shellexecute,Php,Linux,System,Exec,Shellexecute,我正试着用一条线(http://www.cs.cmu.edu/~paisarn/software.html)来处理我的项目。基本上,程序将把句子分解成一组单词。我已经安装了所有东西,并尝试通过命令提示符(Mac上的终端)运行该命令 我执行了一个命令 swath -u u -m long < in_OdwJYw.txt > test.txt swath-u-m长test.txt 该程序工作正常,输出正确的test.txt和分解词 因此,我将代码实现到我的PHP文件中。我用这个方法

我正试着用一条线(http://www.cs.cmu.edu/~paisarn/software.html)来处理我的项目。基本上,程序将把句子分解成一组单词。我已经安装了所有东西,并尝试通过命令提示符(Mac上的终端)运行该命令

我执行了一个命令

swath -u u -m long < in_OdwJYw.txt > test.txt
swath-u-m长test.txt
该程序工作正常,输出正确的test.txt和分解词

因此,我将代码实现到我的PHP文件中。我用这个方法

exec("swath -u u -m long < in_OdwJYw.txt > test.txt");
exec(“swath-u-m longtest.txt”);
没有显示错误,创建了“test.txt”文件,但内部没有任何内容(0字节)

我的问题是为什么命令可以通过提示符运行,为什么我不能使用exec()system()或shell_exec()


谢谢

编辑:原稿由OP编辑。代码片段为:

exec("swath -b "|" -u u -m long < in_OdwJYw.txt > test.txt");
exec(“swath-b”|“-u-m longtest.txt”);

您必须转义您的命令字符串。这样的事情应该会有帮助

exec("swath -b \"|\" -u u -m long < in_OdwJYw.txt > test.txt");
exec(“swath-b\”uu-m longtest.txt”);
具体来说,您的字符串将在
exec(“swath-b\”
此处被剪切。管道在您的命令字符串之外。我认为您的命令的其余部分将被忽略,只有第一部分将在exec中运行

要包含其余部分,您必须转义您的特殊字符,在本例中是您的
。当您使用带有语法高亮显示的编辑器时,您会看到它更好

您有一个php ESAPI的简单示例


通常,打印来自
exec()的输出非常有用
命令。这样您就可以看到发生了什么。

好的,我对代码做了一些修改,将其更改为'swath-m longtest.txt'仍然无法返回相同的空白test.txt,但在运行Prompt时很好。您检查了
exec()的输出了吗
命令?可能是用户权限有问题我尝试了
打印(exec(“swath-m longtest.txt”);
它不返回任何内容。我甚至尝试将sudo放在swath前面,但结果仍然相同。是否有可能我需要配置(启用/禁用)某些内容在php.ini中?请检查。在那里您可以看到exec命令是如何工作的。
string exec(string$command[,array$output[,int$return\u var])
您需要第二个参数,它是一个数组。您为什么要更改代码段?所以我的答案是不需要的。。。