Can';t exec“;银行标识代码:错误的文件描述符(Perl)

Can';t exec“;银行标识代码:错误的文件描述符(Perl),perl,exec,Perl,Exec,我正试图解决一个问题一天,经过许多不受干扰的搜索,我在这里 我试图在Perl脚本上使用ImageMagick套件中的二进制转换来裁剪图片 当我尝试以下简单代码时: use Shell qw(convert); convert("-crop", "50%x50%", $Src, "new_image.png"); 在一个单独的文件上,工作完美 但是,当我尝试在我正在从事的项目上实现它时(我正在实习,正在修复功能),会出现消息“Can not exec convert:Bad file desc

我正试图解决一个问题一天,经过许多不受干扰的搜索,我在这里

我试图在Perl脚本上使用ImageMagick套件中的二进制转换来裁剪图片

当我尝试以下简单代码时:

use Shell qw(convert);

convert("-crop", "50%x50%", $Src, "new_image.png");
在一个单独的文件上,工作完美

但是,当我尝试在我正在从事的项目上实现它时(我正在实习,正在修复功能),会出现消息“Can not exec convert:Bad file descriptor!”

我检查了$Src的路径,尝试通过硬代码重新放置,设置路径,没有任何更改

但是

如果我尝试一个简单的方法:

 convert(-h);
太好了! 我想前面的代码中可能有干扰,但不确定

Ps:这个项目是从一个托管在本地的php服务器启动的,如果它改变了一些东西,但如果从来没有

非常感谢您的阅读和回答

---编辑--- 要求的实际代码

Use Shell qw(convert);

.
.
.

sub checkSubScreen
{
#Parameters init
my ($this, $Scr0, $Scr1) = @_;

    convert("-crop", "50%x50%", $Scr0, "tmp/scr0_crp.png");
    convert("-crop", "50%x50%", $Scr1, "tmp/scr1_crp.png");
....

我无法向您展示整个代码,它确实太大了,但只要问一下,我就会尝试展示

错误消息来自。我不知道有人认为使用
Shell
而不是更传统的
system
/
qx
/pipe open/
IPC::Open3
toolkit可以获得什么,特别是我看不到使用
Shell
可以获得什么

尝试更传统的系统调用

@args = ("50%x50%", $Src, "new_image.png");
system("convert", @args) and warn "convert @args: exit code was $?";

看看是否会收到更传统的错误消息。

好的,最后我决定使用PerlMagick Api,因为它可以正常工作,我认为我的问题是由环境造成的,可能非常具体


这就是答案

我们需要查看实际出现问题的代码以帮助您。是否有原因该标题说
无法执行“bin”
,但您将错误报告为
无法执行转换
?是的,可以让标题更通用一点,但这不会改变问题中的任何东西;)