Exec命令无法按预期工作

时间:2012-02-22 19:45:05

标签: php

我正在尝试从PHP脚本启动CLI命令:

特别是我想使用此命令convert a.png a.tif将图像转换为tiff。

当我从CLI启动此命令时,它按预期工作但如果我使用以下代码从PHP脚本启动它不会在我的文件夹中创建任何tiff图像:

$exec = "convert a.png a.tif";
exec($exec,$yaks,$err);
echo "<pre>";
print_r($yaks);
echo "$err";
echo "</pre>";

此外$yaks为空,$err设为127。

我不是专家,为什么这不能按预期工作?

祝你好运

更新

我使用此命令代替$exec = "convert 4.png 4.tif 2>&1";,我得到了回复[0] => sh: convert: command not found

这似乎很奇怪,因为我可以从CLI使用它!

最终更新

非常感谢你们!

$exec = "/usr/local/bin/convert a.png a.tif";

这个命令解决了这个问题! 你很棒。

3 个答案:

答案 0 :(得分:2)

你应该输入fullpath来“转换”,可能是文件。

错误127 - 找不到文件

答案 1 :(得分:2)

看起来'convert'二进制文件不在PHP正在使用的PATH上的任何目录中。您可以尝试使用完整路径,例如/opt/local/bin/convert或其他路径。

你也可以修改PHP使用的PATH(但我不知道如何)。

答案 2 :(得分:1)

PHP脚本可能不知道在exec命令中找到您要引用的这些内容的位置。当您从命令行运行它时,shell将在您当时所在的目录中查找它们;但是当你从PHP运行它时,它可能默认为PHP目录而不是文件所在的特定目录。所以写出完整的路径。