0

我在使用 php 时遇到了奇怪的问题。我有检查文章文件夹的脚本(以及检查文件夹中图像的非常相似的脚本),并基于该脚本创建文章菜单(或画廊)

在我的本地主机上,这工作正常,并找到所有文件并按预期处理它们。但是在真实服务器上,两个脚本在几个文件后都意外中断。

图片检查脚本是这个

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。权限没有区别。不用说我没有错误。

4

1 回答 1

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;
}

现在您至少会知道您是否遇到了文件可读性问题。

于 2013-08-28T14:04:38.020 回答