从public_html文件夹上方的文件夹中提取随机图像

时间:2013-07-19 20:51:11

标签: php image random root public-html

所以我用这段代码创建了一个image.php文件并将它放在我的public_html文件夹中:

<?php
header('Content-Type: image/jpeg');
readfile('home/folder/my image.jpg');
?>

然后我把这段代码放在我的public_html文件夹的html页面中:

<img src="/image.php">

在我加载页面时,在我的浏览器中完美地显示了“my image.jpg”文件。所以这告诉我,我确实可以访问我的public_html文件夹上面的文件夹(这是一个专用服务器),它告诉我在文件名中渲染带有空格的jpg文件时没有问题。

所以现在我正试图从同一个文件夹中提取随机图像,但似乎无法弄明白。以下是我正在做的不起作用。

我用这段代码创建了一个image.php文件并放入我的public_html文件夹中:

<?php

//Define Function to Select Random Image
function random_pic($dir = '/home/folder')
{
$files = glob($dir . '/*.jpg');
$file = array_rand($files);
return $files[$file];
}

//Select Random Image Path
$randPic = random_pic('/home/folder');

//Output Random Image When image.php is called from html image requests
header('Content-Type: image/jpeg');
readfile($randPic);
?>

然后我把这段代码放在我的public_html文件夹的html页面中:

<img src="/image.php">

现在当我用这个img标签加载这个html页面时,我什么都没得到。没有错误,没有图像,只有白色空间。我感谢任何人都能提供的任何见解。

2 个答案:

答案 0 :(得分:0)

为什么不使用绝对路径而不是

header('Content-Type: image/jpeg');
readfile('home/folder/my image.jpg');

喜欢这个

// notice the absolute path prefix
if(!is_file($image_path = '/home/folder/my image.jpg')){
    header('Content-Type: text/plain', 404);
    echo 'Image file not found!';
}

// We got a file, keep going...
header('Content-Type: image/jpeg');
header('Content-Length: '.filesize($image_path));
readfile($image_path);

die; // done here

或者使用相对于.php脚本当前目录的路径__DIR__.'/path/to/image.jpg'

答案 1 :(得分:0)

您必须将safe_mode =关闭或配置open_basedir才能访问images目录。