PHP:Backtick无法使用命令

PHP:Backtick无法使用命令,php,bash,Php,Bash,我有一个PHP脚本,通过在Bash中使用backtick操作符执行命令,从文件中检索200行。下面是代码的样子: $endline = `(shell execution that returns a number here)`; $line = $endline - "200"; $lines = "sed -n '".$line.", ".$endline." p' log.txt"; echo $lines; $file = `$lines`; echo $file; 此代码返回$li

我有一个PHP脚本,通过在Bash中使用backtick操作符执行命令,从文件中检索200行。下面是代码的样子:

$endline = `(shell execution that returns a number here)`;
$line = $endline - "200";
$lines = "sed -n '".$line.", ".$endline." p' log.txt";

echo $lines;
$file = `$lines`;
echo $file;
此代码返回
$lines
作为
sed-n'18002000p'log.txt
,但
$file
不返回任何结果。在Bash终端中直接使用sed-n'18002000p'log.txt时,我得到了预期的结果

这里有什么地方做得不对?是否必须转义
字符


编辑:shell脚本在数字后添加了一个空格,因此误读了它。

我猜它是
$eof
,或者您的路径(
log.txt
)不合适

我复制并粘贴了您的代码,并对其进行了以下调整:

  • 语法错误已修复(将
    添加到
    echo$行中
  • $eof
    更改为
    $endline
    (如果
    $eof
    有效,则可能不需要更改)
  • 确保
    log.txt
    是有效路径(这很可能是您的错误)
  • 否则,它将按预期运行


    它可以在Bash中工作而不能在PHP中工作的原因是它们的“工作目录”不一定相同。

    您没有执行command@ColeJohnson反勾号不算作执行命令?是的,正在执行shell命令。或者更确切地说,如果允许使用shell命令(不在安全模式下,并且未禁用shell_exec),代码至少是正确的所以,作为一个健全的检查,你能做
    echo`tail log.txt`
    ?是的,这是一堆我在发布这篇文章时忘记的垃圾,真正的代码与此不同。我已经做了
    ls-al
    等来确认文件目录。你确定你有权限运行shell命令吗?你能做
    echo`pwd`
    ?我有权限,我有权限'我已经启动了进程,并用倒勾列出了目录内容。注意:修复了原始post.fwiw中的语法错误,我可以一字不差地复制/粘贴您的代码(只需将log.txt更改为已知的良好路径,行数也一样),它在OS X 10.6.7上的PHP5.3.4上运行良好