php exec放入图片,Php exec命令转换图像

我正在尝试使用imagemagick命令“convert”从.png创建一个.tif图像.

我带来的是:

$exec = "/opt/local/bin/convert -adaptive-resize 150% ".$pos.".png ".$pos.".tif";

exec($exec);

如果我遇到CLI“哪个转换”我得到了这条路径:/ opt / local / bin / convert.我也试过没有路径,只有/ opt / local / bin / convert -adaptive-resize 150%“.$pos.”.png“.$pos.”.tif和/ etc / local / bin / convert – 自适应调整大小150%“.$pos.”.png“.$pos.”.tif.

如果我在终端中运行该命令它按预期工作,但是当我尝试从PHP脚本中使用它时,它不起作用.

编辑:

我还尝试使用以下代码创建.sh文件,但没有成功:

#! /bin/bash

convert -adaptive-resize 150% 1.png 1.tif

convert -adaptive-resize 150% 2.png 2.tif

convert -adaptive-resize 150% 3.png 3.tif

convert -adaptive-resize 150% 4.png 4.tif

convert -adaptive-resize 150% 5.png 5.tif

convert -adaptive-resize 150% 6.png 6.tif

convert -adaptive-resize 150% 7.png 7.tif

convert -adaptive-resize 150% 8.png 8.tif

convert -adaptive-resize 150% 9.png 9.tif

如果我从终端运行它就像一个魅力.

相反,如果我尝试从一个简单的PHP文件执行它,它不会创建任何.tif文件.

$exec = "./convertpngtif.sh";

exec($exec);

?>

解决方法:

线索在上面的Hieu Nguyen回答:当你从命令行运行PHP -r时,它可以工作.当您在浏览器中运行时,它不会.这导致三个可能的问题之一.

要记住的关键是,当您运行exec时,脚本,用户,路径和工作目录将以运行PHP的相同用户/权限运行.

在命令行中运行PHP时,PHP将以用户为您登录的用户(“您”)运行,因此exec()也将运行“您”.这也是您用来编写shell脚本的用户.因此权限与您的相同,并且它的工作原理(很棒).

当PHP在Apache(或IIS)中运行时,可能是也可能不是“你”.在你的情况下,它显然不是因为脚本不起作用 – PHP可能运行为“apache”或“http”或“www”或一些类似命名的用户.

这导致三个可能的问题之一.那要检查一下:

1)和2)路径和工作目录.

上面一次提出了一个建议,但是规定绝对路径(即完整路径,从root /开始)到所有文件 – 可执行命令,输入文件和输出文件更安全.这排除了可能出现的路径或工作目录的任何差异.如果使用shell脚本,则规定shell脚本的完整路径及其中的完整路径(或在顶部设置路径/目录)

3)权限

上面再次提出,但每个人都专注于文件.但是你检查过convert executable命令本身的权限了吗?

还有shell脚本,你有没有为PHP运行的用户设置可执行文件的权限?如果你在apache中以不同的用户身份运行,则“你”所拥有的rwxr – r–并不令人满意.

如果与这些方法斗争,还有其他几种解决方案:

>即使在使用fastCGI安装的Apache中,您也可以将PHP作为“您”运行.这样您就可以知道运行两个PHP脚本的用户/路径/工作目录了. (我仍然建议使用完整路径,但仍然可以缓解权限问题)

>您可以通过以“apache”或“www”或“http”等身份登录并设置权限/路径来调试脚本,以便您的脚本现在可以正常工作.

标签:php,permissions,exec,mamp,macos

来源: https://codeday.me/bug/20190713/1450122.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值