【发布时间】:2011-02-12 15:48:03
【问题描述】:
我正在开发一个服务器应用程序,最近在测试服务器 (Debian Squeeze) 上遇到了这个奇怪的错误。
我传递给 popen 的每个可执行文件都失败并显示一条消息:
sh: sort: not found // happens to any command
无论我是指向“type”返回的完整路径还是保持简短,都会发生这种情况。 如前所述,这仅在一个测试环境中发生,为了增加混乱,运行相同的操作系统并且没有任何问题。
Popen 显然使用 sh 来执行命令,但如果我通过命令行(bash 或 sh)运行相同的命令,一切都很好
提前致谢
(PS:甚至尝试过 Python os.popen 只是为了解决这个问题,它确实有效!)
编辑 这是一个失败的简单调用:
$command="tail -10 myfile";
$handle = popen($command.' 2>&1','r');
if($handle){
while (!feof($handle)){
....//process buffer
}
}
返回:
sh: tail: not found
【问题讨论】:
-
请发布实际调用,如果使用任何变量,请显示它们是如何生成的。
-
使用二进制全路径的结果是一样的吗? (我的意思是:哪里是尾巴)
-
是的,只要它通过 popen 运行,sh 就会返回那个错误消息 ..
-
您是否尝试以超级用户身份从 cli 运行它?
-
通过 CLI 运行它是没有问题的,你甚至不需要成为超级用户,但是相同的命令失败并出现 POPEN,这就是问题 -.-