使用PHP在文件夹中显示图像

时间:2011-11-21 02:26:53

标签: php html

好的,一直在寻找互联网甚至Stackoverflow,但我似乎无法使用以下PHP代码。

<div class="grid">
<ul class="images">
<?php
//path to directory to open
$directory = "/Media/pics/";
$dir_handle = @opendir($directory) or die("Unable to open folder");

while(false !== ($file = readdir($dir_handle)))
{
  if($file != '.' && $file != '..' && $file != 'Thumbs.db') 
  {
    echo "<li class='picture' title='Remote2'> <img src='/Media/pics/".$file."'alt='test'/></li>";                      
  }
}
closedir($dir_handle);
?>

每次我尝试查看页面时,都会得到:

403 Forbidden - 您无权访问此服务器上的 intranet / Media / pics /".$文件。“

然而,我能够导航到“intanet / Media / pics”并查看并单击文件夹中的所有图像。 我不认为这是一个权限问题,但也许我在PHP代码中缺少一些东西。让我希望我有一个非常好的PHP编辑器,语法高亮和自动完成(目前使用Aptana Studio 3)。

感谢您的帮助!

解决方案:必须执行以下操作: 1)将“pictures.html”更改为“pictures.php”(newb错误)

2)修复从“/ media / pics”到“media / pics”的真实路径

4 个答案:

答案 0 :(得分:2)

您使用的是绝对路径,例如/Media/pics/somepic.jpg。您的文件系统根目录中是否有/Media目录?同样,/ Media文件夹是您网站文档根目录的一部分吗?请记住,PHP的文件操作在文件系统级别工作,而不是在Web服务器的URL级别。 PHP可以访问完全在您网站范围之外的文件,因此直接输出文件系统作为src的URL可以很容易地指向远程用户无法访问的文件。

答案 1 :(得分:0)

Unix系统通常默认限制文件读取权限。如果您知道如何CHMOD,请确保PHP有权读取该目录。 (如果Apache是​​他们的拥有者,640就足够了。如果没有,你可以尝试更高,但阅读时你不应该高于700或750.)

答案 2 :(得分:0)

尝试更改此行:

echo "<li class='picture' title='Remote2'> <img src='/Media/pics/".$file."'alt='test'/></li>";

echo "<li class='picture' title='Remote2'> <img src='/Media/pics/$file' alt='test'/></li>";

如果将变量名称视为字符串,则您的错误有点奇怪。双引号将使用$ file的值,因此如果它不起作用,至少应该给我们一个不同的错误。

编辑:我也怀疑路径可能会丢失,因为已经提到过。将您的路径与错误中提到的路径进行比较,看看您是否正确地完成了整个过程。例如,它应该是/ home / site / Media / pics(作为示例)

答案 3 :(得分:0)

查看@Marc B答案的评论。

文件中的PHP脚本似乎没有被执行。您是否正确命名了文件?

为了运行PHP screpts,您需要为该文件提供“.php”扩展名。我怀疑你可能会把它命名为“.html”?

或者是否没有正确设置Apache上的配置以运行PHP之后的“.php”文件?