PHP奇怪的行为。服务器和localhost上的不同结果

时间:2013-08-28 13:23:04

标签: php

我遇到了一些奇怪的问题。我有脚本检查文件夹的文章(以及检查图像文件夹的非常相似的脚本)并基于它创建文章菜单(或图库)

在我的localhost上运行正常,找到所有文件并按预期处理它们。 但在真实服务器上,两个脚本在几个文件后意外中断。

图像检查脚本就是这个

function GalleryList() {
echo '
    <div class="GalleryGrid">
      <ul>';
      error_reporting(E_ALL);

      $thumbs = array_diff(scandir('images/Thumbs'),array ('..','.','Thumbs.db'));
      foreach ($thumbs as $key => $current) {
      $imagelist[filectime('images/Thumbs/'.$current)] = $current;
      }
      krsort($imagelist);


      foreach ($imagelist as $key => $thumb) {
        $fullImage = substr($thumb,6);


       echo '<li><a href="images/'.$fullImage.'"><img src="images/Thumbs/'.$thumb.'"> </a> </li>'.PHP_EOL;

      }
      echo '</ul>';




}

文章检查几乎是相同的脚本,只有不同的文件夹和不同的输出HTML。权限没有区别。 不用说我没有错误。

1 个答案:

答案 0 :(得分:0)

当你说它“中断”时,如果不知道实际发生了什么,我猜你正在遇到文件权限问题。也许Apache在您的本地主机上以您的用户名或广泛权限运行,而在您的服务器上它更具限制性?

如果你改变了这一点会发生什么:

echo '<li><a href="images/'.$fullImage.'"><img src="images/Thumbs/'.$thumb.'"> </a> </li>'.PHP_EOL;

到此(代码是故意的超级简化):

$fullImagePath = "images/$fullImage";
$fullThumbPath = "images/Thumbs/$thumb";

if (is_readable($fullImagePath)) {
    echo "<li>$fullImagePath is readable</li>".PHP_EOL;
} else {
    echo "<li>$fullImagePath is not readable</li>".PHP_EOL;
}

if (is_readable($fullThumbPath)) {
    echo "<li>$fullThumbPath is readable</li>".PHP_EOL;
} else {
    echo "<li>$fullThumbPath is not readable</li>".PHP_EOL;
}

现在你至少知道你是否有文件可读性问题。

相关问题