【问题标题】:PHP exec() on windows not workingWindows上的PHP exec()不起作用
【发布时间】:2010-03-15 19:22:27
【问题描述】:

嘿,我正在尝试通过 PHP 在 Windows 上执行一个程序,命令发布在下面。这似乎根本没有通过脚本运行,即使在手动将命令输入命令提示符时它也可以工作。

exec('C:\\ffmpeg -i ' . $movedfile . ' -acodec aac -ab 128k -vcodec libx264 -fpre C:\\ffmpeg\\share\\ffmpeg\\libx264-hq.ffpreset -crf 22 -threads 0 -wpredp 0' . $convertedfile);

有什么建议吗?

谢谢!

【问题讨论】:

  • 如果您将执行的内容放入变量中并 echo $var;执行($var); echod var 确实有效吗?

标签: php exec


【解决方案1】:
  1. 最后缺少一个空格
  2. 你真的应该使用escapeshellarg()

【讨论】:

  • 谢谢,那个空间是导致问题的原因。上帝,有时您只需要另一双眼睛来查看您的代码。非常感谢!
【解决方案2】:
exec('C:\ffmpeg -i  ....

这意味着您的 C:\ 根目录中将有 ffmpeg.exe。我想你的意思是

exec('C:\ffmpeg\ffmpeg -i  ....

【讨论】:

  • 不,它位于我的 C 根目录中用于测试目的。我也尝试过 plod 的建议
  • $execvar = exec('C:\\ffmpeg -i ' . $movedfile . ' -acodec aac -ab 128k -vcodec libx264 -fpre C:\\ffmpeg\\share\\ffmpeg\ \libx264-hq.ffpreset -crf 22 -threads 0 -wpredp 0' . $convertedfile);调试($execvar);但 execvar 中没有任何价值
【解决方案3】:

尝试只运行命令本身而不使用任何选项,看看是否有帮助。此外,尝试先运行一些简单的东西 - dir 等。

【讨论】:

  • 当我执行 dir 时,它确实返回结果:8 Dir(s) 549,287,497,728 bytes free
  • 所以执行工作。您编写 ffmpeg + 选项的方式存在一些问题。
【解决方案4】:

你检查权限了吗?假设标准配置,IUSR_MACHINENAME 需要对可执行文件、任何源/输出文件以及任何临时目录/文件的读取和执行权限

【讨论】:

  • Yes...IUSR_MACHINENAME 是一个标准的 Windows 系统用户,IIS 默认使用它来执行/访问网站文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 2021-09-26
  • 1970-01-01
相关资源
最近更新 更多