PHP如果文件存在不起作用

时间:2011-11-04 02:22:46

标签: php slider echo nivo-slider

我使用的是一个在jquery幻灯片中显示图像的简单脚本 - 这些图像文件名列在.txt文件中,并根据您所在的页面进行更改(我还在其他脚本中使用分页)。

如果.txt文件中列出的文件名不存在,我希望显示图像'unavailable.jpg'而不是......

原始剧本:

<?php
echo"
<div id='slider-wrapper'><div id='slider' class='nivoSlider'>";
$photos=file("photos.txt");
foreach($photos as $image){
$item=explode("|",$image);
if($item[0]==$fields[0]){
$photo=trim($item[1]);
echo"<img src='images/work/$photo' alt='' />\n";
}
}
echo"
</div>
</div>
"?>

这是我的尝试...但它无法正常工作 - 而不是显示'unavailable.jpg'图像,它显示目录中的所有图像......:S任何人都有我可能做错了什么的想法? :S

<?php
echo"
<div id='slider-wrapper'><div id='slider' class='nivoSlider'>";
$photos=file("photos.txt");
foreach($photos as $image){
$item=explode("|",$image);
$photo=trim($item[1]);
if (file_exists("images/work/".$photo)) {
echo"<img src='images/work/$photo' alt='' />\n";
}
else{
echo"<img src='images/work/unavailable.jpg' alt='' />\n";
}
}
echo"
</div>
</div>
"?>

我只希望显示该页面的图像,而不是显示所有图像。以下是我的文本文件示例:

1|image1.jpg
1|image2.jpg
1|image3.jpg
2|image1.jpg
2|image2.jpg

1和2用于第1页和第2页,它们显示列出的图像。这一切在我发布的上述原始脚本中都可以正常工作,但是当我添加if file_exists时它似乎会中断。

2 个答案:

答案 0 :(得分:1)

图像的路径使用相对路径。您确定当前的工作目录是您认为的目录吗?

验证执行echo 'Current Working Directory: '.getcwd()."<br />\n"并验证您所在的目录。

最好使用图像目录的完整文件路径,以便脚本可以放在服务器的任何位置。

现在,如果这是正确的,那么您需要检查您的脚本是否具有图像目录的权限。通常,php运行为nobody:nobodyapache:apache,具体取决于您的配置。

上面的目录以及文件应该有644(-rw-r - r--)或至少444权限(-r - r - r-- )。

尝试这两件事,让我们知道是否能解决您的具体问题;我希望如此。

答案 1 :(得分:0)

您需要为$ item [0] == $ fields [0]:

重新添加测试
<?php
    echo "<div id='slider-wrapper'><div id='slider' class='nivoSlider'>";
    $photos = file("photos.txt");
    foreach ($photos as $image) {
        $item = explode("|",$image);
        $photo = trim($item[1]);
        if (file_exists("images/work/".$photo)
            && $item[0] == $fields[0]
        ) {
            echo "<img src='images/work/$photo' alt='' />\n";
        } else {
            echo "<img src='images/work/unavailable.jpg' alt='' />\n";
        }
    }

    echo "</div></div>";
?>

编辑: 我只是注意到Ott在评论中已经指出了这一点。你还在使用unavailable.jpg吗?