【问题标题】:Executing shell command in php doesn't work在php中执行shell命令不起作用
【发布时间】:2013-11-24 11:56:18
【问题描述】:

我正在尝试执行一个 shell 脚本,使用命令 convert 将一些图像从 .png 转换为 .tif。

我写了一个简短的shell脚本:

#! /bin/bash
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/1.png /Applications/MAMP/htdocs/test/1.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/2.png /Applications/MAMP/htdocs/test/2.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/3.png /Applications/MAMP/htdocs/test/3.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/4.png /Applications/MAMP/htdocs/test/4.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/5.png /Applications/MAMP/htdocs/test/5.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/6.png /Applications/MAMP/htdocs/test/6.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/7.png /Applications/MAMP/htdocs/test/7.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/8.png /Applications/MAMP/htdocs/test/8.tif
convert -adaptive-resize 150% /Applications/MAMP/htdocs/test/9.png /Applications/MAMP/htdocs/test/9.

如果我从终端运行此脚本,它会按预期工作。

相反,如果我从 php 页面中启动它,它不会。

我正在使用此代码:

exec("bash /Applications/MAMP/htdocs/test/convertpngtif.sh");

我该如何解决这个问题?

【问题讨论】:

  • 从 php 页面中启动它时,是否收到任何错误消息?
  • 运行 PHP 的用户可能没有访问该脚本的权限。
  • 试试这个:shell_exec("bash/Applications/MAMP/htdocs/test/convertpngtif.sh");
  • @TecBrat 不,我没有收到任何错误消息
  • @vascowhite 我确定这是问题所在,我该如何解决?

标签: php macos shell terminal imagemagick


【解决方案1】:

这是一个权限问题。您需要允许运行 PHP 的用户访问 sh 文件。

PHP 通常作为 www-data 运行,在这种情况下,您可以打开终端并运行以下内容:-

chown www-data:www-data /Applications/MAMP/htdocs/test/convertpngtif.sh

我不知道您的系统是如何设置的,因此您可能需要 sudo 该命令。

您必须确保 www-data 也可以访问 bash 脚本以类似方式访问的文件,因此只需以下命令即可:-

chown -R www-data:www-data /Applications/MAMP/htdocs/test/

【讨论】:

  • chown: www-data: 无效参数
  • 啊,对不起,我以为你在 Linux 上。没有发现 OSX 标签,真是个笨蛋!帮不上忙了,抱歉。虽然看起来语法是一样的ss64.com/osx/chown.html
【解决方案2】:

解决方案:在 shell 脚本中使用完整路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2014-04-21
    相关资源
    最近更新 更多