司令部赢得';无法使用PHP exec(),但如果通过提示符运行,则运行良好
我正试着用一条线(http://www.cs.cmu.edu/~paisarn/software.html)来处理我的项目。基本上,程序将把句子分解成一组单词。我已经安装了所有东西,并尝试通过命令提示符(Mac上的终端)运行该命令 我执行了一个命令司令部赢得';无法使用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文件中。我用这个方法
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 longexec()的输出了吗
命令?可能是用户权限有问题我尝试了打印(exec(“swath-m longtest.txt”);
它不返回任何内容。我甚至尝试将sudo放在swath前面,但结果仍然相同。是否有可能我需要配置(启用/禁用)某些内容在php.ini中?请检查。在那里您可以看到exec命令是如何工作的。string exec(string$command[,array$output[,int$return\u var])
您需要第二个参数,它是一个数组。您为什么要更改代码段?所以我的答案是不需要的。。。