为什么 exif_read_data() 在将文件移动到其他服务器后不起作用?

Why is exif_read_data() not working after moving file to other server?

我正在尝试将一个程序从一台服务器移动到另一台服务器,但同一个脚本无法运行,我不知道为什么...下面是我失败的脚本的缩小版本:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$string=file_get_contents("../photos/report14/concreteCurb/baseCompaction1.jpeg");
$exif = exif_read_data("data:image/jpeg;base64," . base64_encode($string));
print_r($exif);
?>

工作的服务器吐出一个简单的

Array ( [FileName] => Z [FileDateTime] => 0 [FileSize] => 137976 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => COMMENT [COMPUTED] => Array ( [html] => width="773" height="1000" [Height] => 1000 [Width] => 773 [IsColor] => 1 ) [COMMENT] => Array ( [0] => CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), quality = 90 ) )

...但不抛出的那个...

Warning: exif_read_data(): Unable to open file in /nfs/c11/h01/mnt/208416/domains/s208416.gridserver.com/html/advantage/scripts/test.php on line 5

两者都启用了 EXIF 支持(均为 1.4 版)。 PHP旧服务器的版本是5.3.5,而新服务器是5.5.21,但我也试过它恢复到5.3.29,但无济于事。

只是一个想法,但如果你在 CentOS 机器上 运行 这个(可能与 linux 发行版没有直接关系)你应该尝试将文件的绝对路径添加到像这样的路径:

$string = file_get_contents(dirname(__FILE__) . '../photos/report14/concreteCurb/baseCompaction1.jpeg');

这在过去为我解决了类似的问题。