为什么在将文件移动到其他服务器后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');

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