繁体   English   中英

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

[英]Display images in a folder using PHP

好的,一直在寻找互联网甚至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”的真实路径

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

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

尝试更改此行:

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(作为示例)

看看对@Marc B答案的评论

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM