gpt4 book ai didi

Php exec命令转换图片

转载 作者:可可西里 更新时间:2023-10-31 23:54:13 26 4
gpt4 key购买 nike

我正在尝试使用 imagemagick 命令“转换”从 .png 图像创建 .tif 图像。

我带来的是:

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

如果我遇到 CLI“which convert”,我会得到该路径:/opt/local/bin/convert。我也试过没有路径,只有 /opt/local/bin/convert -adaptive-resize 150% ".$pos..png ".$pos..tif/etc/local/bin/convert -adaptive-resize 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 文件。

<?php
$exec = "./convertpngtif.sh";
exec($exec);
?>

最佳答案

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

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

当在命令行中运行 PHP 时,PHP 将作为您登录的用户(“您”)运行,因此 exec() 也将运行“您”。这也将是您用来编写 shell 脚本的同一用户。因此,权限与您的相同,并且可以正常工作(很好)。

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

这会导致三个可能的问题之一。那么要检查什么:

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

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

3) 权限

同样如上建议,但每个人都专注于文件。但是您是否检查过convert 可执行命令本身的权限?

对于 shell 脚本,您是否将其权限设置为运行 PHP 的用户的可执行文件?如果您在 apache 中以不同的用户身份运行,则 rwxr--r-- 由“您”拥有并不令人满意。

如果遇到这些问题,还有其他一些解决方案:

  1. 即使在 Apache 中使用 fastCGI 安装,您也可以让 PHP 以“您”的身份运行。这样你就知道你正在运行这两个 PHP 脚本的用户/路径/工作目录。 (我仍然推荐完整路径,但仍然可以缓解权限问题)

  2. 您可以通过以“apache”或“www”或“http”等身份登录并设置权限/路径来调试脚本,以便您的脚本现在可以运行。

关于Php exec命令转换图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17654642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com