PHP:echo shell_exec(" cat"。$ filename。" | head -1");导致cat:写入错误:管道错误

时间:2016-11-22 14:11:03

标签: php shell command-line-interface

$php index2.php testphp

$filename = $argv[1];

echo shell_exec("cat ".$filename." | head -1"); 

导致以下错误:

cat: write error: Broken pipe error

我不知道为什么会收到此错误。更改为以下内容仍然会出现错误:

echo shell_exec("cat testphp | head -1"); 

1 个答案:

答案 0 :(得分:1)

我不能肯定地说你为什么会得到破损的管道错误。我在我的系统上测试了代码,它运行得很好。

然而,在这种情况下更好的解决方案可能只是使用PHP而不是通过第三方程序。使用file()和一些简单的数组操作获取文件的第一行是微不足道的:

$data = file ($filename);
if (is_array ($data)) {
    echo "Error reading file!";
    return 1;
}

echo $data[0];

如果文件太大而无法一次包含在内存中,那么您可以使用fopen()fread()一次读取一行。只需记住在函数周围添加检查,以处理可能发生的错误情况。