【问题标题】:PHP shell_exec() - having problems running commandPHP shell_exec() - 运行命令时出现问题
【发布时间】:2011-06-29 12:05:20
【问题描述】:

我是 php shell 命令的新手,所以请多多包涵。我正在尝试在我的服务器上运行 shell_exec() 命令。我正在尝试以下 php 代码:

$output = shell_exec('tesseract picture.tif text_file -l eng');
echo "done";

我在 php 文件所在的目录中有 picture.tif。在我的外壳中,我可以毫无问题地运行它。

运行代码需要一段时间,然后它不会像我在命令提示符下运行它时那样生成 text_file。

【问题讨论】:

  • 命令在命令行上运行需要多长时间?
  • 尝试使用tesseract 的绝对路径。要找出它,请从命令行运行 which tesseract。然后获取该结果并在shell_exec 调用中使用该路径...
  • @Orbling - 我想大约 10 秒。
  • @bryan sammon:执行 PHP 脚本需要的时间比这更长吗? [先改成ircmaxell推荐的绝对路径]
  • 我只是更改了路径,它花费了相同的时间,但仍然没有写入 text_file。您认为它可能会将其留在不同的目录中?

标签: php exec


【解决方案1】:

这可能是权限问题吗?我的猜测是,PHP 运行的权限与您直接从命令提示符执行命令时的权限不同。你在什么操作系统上运行?

【讨论】:

    【解决方案2】:

    根据您的评论:

    我应该在 shell 中写一个循环吗 代替?

    您可以编写一个非常简单的 shell 脚本来循环运行命令。先创建脚本文件:

    touch myscript.sh
    

    使脚本可执行:

    chmod 700 myscript.sh
    

    然后用vim之类的文本编辑器打开它并添加:

    for ((  i = 0 ;  i <= 5;  i++  ))
    do
      tesseract picture.tif text_file -l eng
    done
    

    这就是它的基本知识(不确定您还需要什么),但是该语法应该可以帮助您入门。要运行脚本,如果您与脚本位于同一目录中,请执行以下操作:

    ./myscript.sh
    

    或者指定从任何地方运行它的完整路径:

    /path/to/mydir/myscript.sh
    

    【讨论】:

    • 刚回来看到有人回答。这是执行此操作的最简单方法。在您回答之前,我已经开始这样做了,这将是迄今为止最好的解决方案。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2011-05-21
    相关资源
    最近更新 更多