奇怪的是,一切都在我的本地主机上运行良好,但在服务器上却无法正常工作。
因此,就像提到的那样,通过ssh登录运行exiftool命令是可以的。
但是,在一个php测试脚本中运行(请注意,我已经在每个测试目录中安装了exiftool,并且通过ssh运行),虽然它以orangeman用户身份运行,但没有任何东西可以访问。
而且它失败了。
这里有一个更新 - 一整天都在这上面:
在shell上:
-bash-4.1$ which exiftool -a
~/perl5/bin/exiftool
/usr/bin/exiftool
~/perl5/bin/exiftool
在PHP中使用
shell_exec('exiftool -a');
。/usr/bin/exiftool
以下是该文件链接的内容:
lrwxrwxrwx 1 root root 33 May 15 02:10 exiftool -> /home/orangeman/perl5/bin/exiftool
我还尝试过创建各种符号链接,通过在php中使用
putenv();
篡改主要的$PATH变量...但我真的一无所知。在本地主机上可以工作,在专用服务器上不行。
我已经加了赏金 - 这是一个严重的开发问题。
我在专用服务器上,问题如上所述。
更新 根据@gcb的建议,我能够打印出错误,当php的exec()函数运行系统命令时没有效果。
PHP
<?php
exec('exiftool 2>&1', $output, $r);
var_dump($output, $r);
?>
输出:
array(2) {
[0]=>
string(230) "Can't locate Image/ExifTool.pm in @INC (@INC contains: /bin/lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /bin/exiftool line 33."
[1]=>
string(59) "BEGIN failed--compilation aborted at /bin/exiftool line 33."
}
更新
@gcb的解决方案已经生效。非常感谢。
/usr/bin/exiftool
不是一个目录。/usr/bin
是目录,而/usr/bin/exiftool
(如果存在)将是一个文件。 - that other guy