【问题标题】:PHP ImageMagick convert doesn't work under OSXPHP ImageMagick 转换在 OSX 下不起作用
【发布时间】:2013-02-20 18:12:30
【问题描述】:

我在 OSX 下有一个 apache 网络服务器和一个已安装和配置的 ImageMagick。如果我尝试从终端执行一些 ImageMagick 命令,它可以正常工作,但如果我尝试使用 PHP 中的 exec 或 shell_exec 执行此操作,它就不起作用。

这就是我所做的: 我设置环境变量:

apache_setenv("PATH", "/etc/ImageMagick-6.8.1/bin:".apache_getenv("PATH"));

并尝试执行一些命令:

exec('convert -version', $imgkOut);

$imgkOut 数组始终为空。

我尝试设置两个路径:'convert ...' 和 '/etc/ImageMagick-6.8.1/bin/convert ...' - 没有任何帮助。

在 apache 日志文件中我发现了这些错误:

sh: convert: command not found

对于第一种情况,这是:

sh: /etc/ImageMagick-6.8.1/bin/convert: Permission denied

第二次。

我做错了什么?

【问题讨论】:

    标签: php imagemagick shell-exec


    【解决方案1】:
    1. 你看到http://php.net/manual/en/book.imagick.php了吗?
    2. 尝试从 macports 安装 imagemagick - http://www.macports.org/ports.php?by=name&substr=imagemagick
    3. 检查 exec 以进行转换(可能文件没有 +x 标志?所以只需 chmod +x 转换)

    【讨论】:

    • 感谢您的回答。我不想安装 Imagick 和 Macports。 convert 现在有这些权利:-rwxrwxr-x@ 1 xxx staff 10748 31 Dez 18:05 convert 但它仍然不起作用。
    【解决方案2】:

    你得到的错误暗示:

    1. apache_setenv 命令不起作用。
    2. Web 用户无权运行该命令。

    如果你这样做了

        cd /etc/ImageMagick-6.8.1/bin
        chmod +x convert
    

    然后用第二个版本再试一次,你提供完整的路径,它应该可以工作。

    【讨论】:

    • 感谢您的回答。我已经设置了权限,但仍然得到同样的错误:/etc/ImageMagick-6.8.1/bin/convert: Permission denied
    • 你能从 php 脚本运行任何 shell 命令还是只是转换?
    • 那时不知道。如果它对所有人都可执行,它应该可以工作。除非 php.ini 中有东西阻止它,除非它在全局路径中。尝试全局添加 PATH(不仅仅是在你的 shell 中),看看会发生什么。 (serverfault.com/questions/16355/how-to-set-global-path-on-os-x/…)(你可能需要重启)
    • 它似乎不起作用...... PATH 现在是......:/etc/ImageMagick-6.8.1/bin,但我得到同样的错误:转换:找不到命令
    • 您有多个版本的 convert 吗?尝试'which convert'并查看路径是什么。 (我抓着稻草!)
    猜你喜欢
    • 2023-03-03
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2016-08-02
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多