【问题标题】:Why PHP shell_exec is not working为什么 PHP shell_exec 不工作
【发布时间】:2013-07-09 04:02:02
【问题描述】:

png优化插件Optipng的命令:

命令使用教程

Synopsis: optipng [options] files ... 
Files: Image files of type: PNG, BMP, GIF, PNM or TIFF
Basic options:
  -?, -h, -help show the extended help
  -o optimization level (0-7)    [default: 2]
  -v     run in verbose mode / show copyright and version info
Examples:
   optipng file.png
 (default speed)
   optipng -o5 file.png
 (slow)
   optipng -o7 file.png
 (very slow)
Type "optipng -h" for extended help.

然后我运行下面的 PHP 代码

$txt = shell_exec("C:\DSPadmin\DEV\optipng\optipng C:\Source\ChangSha\temp_process\production\zoomTxt\A06_text.png");
var_dump ($txt);

返回 NULL 并且不执行任何操作

但是当我在我打开的 cmd shell 中运行相同的命令时

C:\DSPadmin\DEV\optipng\optipng C:\Source\ChangSha\temp_process\production\zoomTxt\A06_text.png

它按预期工作,如何解决问题?谢谢

【问题讨论】:

  • 安全模式是否开启?运行 Web 服务的用户是否有权运行命令和/或写入输出目录?
  • 如果默认情况下未禁用此功能,您是否检查了您的php.ini?在php.ini中寻找disable_functions
  • 感谢您的帮助/插件的官方文档:optipng.sourceforge.net/optipng-hg.man.pdf ,有没有任何创建
  • 你是否启用了错误报告并检查了error.log;还要对双引号中的反斜杠或路径中的正斜杠使用正确的转义。
  • 我试过 ini_get('safe_mode') 并返回 bool(false)

标签: php exec system shell-exec


【解决方案1】:

单引号你的命令。

"...hangSha\temp_proces..." 中的

"\t" in " ...hangSha\temp_proces..." 被制表符替换。

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 2014-05-23
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2014-07-15
    相关资源
    最近更新 更多