我遇到了一些奇怪的问题。我有脚本检查文件夹的文章(以及检查图像文件夹的非常相似的脚本)并基于它创建文章菜单(或图库)
在我的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。权限没有区别。 不用说我没有错误。
答案 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;
}
现在你至少知道你是否有文件可读性问题。