【问题标题】:exec in PHP not workingPHP中的exec不起作用
【发布时间】:2013-09-23 05:57:21
【问题描述】:

我想在 ubuntu 终端中执行命令。当我直接在终端中运行命令时,它运行没有任何问题。但我真正想做的是通过 PHP 执行这个命令。

chdir('/home/thilini/FYP/testone/bin/');    
exec('./mindtct input_folder/filename output_folder/filename'); 

我写的php代码如上所示。我正在使用 ubuntu 10.10 和 LAMP 配置。 chdir 工作正常,我已成功从 /var/www/ 移动到 /home/thilini/FYP/testone/bin/ (我有可执行的 mindtct)。但执行不工作。 (mindtct 是一个可执行文件,它将输入文件夹中的文件转换为另一种格式,并将其存储在给定名称下的 output_folder 中)。 我究竟做错了什么?

【问题讨论】:

  • 对不起,我实际上使用了引号。更新
  • 检查./mindtct是否被标记为可执行文件(ls -l /home/thilini/FYP/testone/bin/mindtct)。
  • 它被标记为可执行文件。 mindtct 上的所有用户都具有读、写、执行权限。

标签: php ubuntu lamp


【解决方案1】:

问题是路径中的问题。缺少正斜杠。

【讨论】:

    【解决方案2】:

    如果你在 php 5.4 以下运行,请检查你的 ini 文件中的“safe_mode”。

    http://www.php.net/manual/en/features.safe-mode.functions.php

    【讨论】:

    • 安全模式已关闭。
    • 所有用户都拥有读、写、执行权限。
    • 这可能不是最好的评论,但由于二进制权限对所有人都是可执行的并且您没有收到任何错误,您是否确保二进制文件的参数有效并具有有效权限?跨度>
    【解决方案3】:

    你可能想要

    exec('./mindtct input_folder/filename output_folder/filename');
    

    也许你应该在你的脚本中设置 error_reporting(-1) 以便你得到一些错误

    【讨论】:

    【解决方案4】:

    您想使用shell_exec(),而不是exec()

    shell_exec() 在终端中执行命令,而exec() 打开应用程序。

    $results = shell_exec('./mindtct input_folder/filename output_folder/filename');
    print_r($results);
    

    这将执行命令,将其存储在结果中,然后以数组格式打印结果。

    http://php.net/manual/en/function.exec.php
    http://php.net/manual/en/function.shell-exec.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-20
      • 2014-11-27
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多