0

所以我用这段代码创建了一个 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 页面时,我什么也得不到。没有错误,没有图像,只有空白。我感谢任何人可以提供的任何见解。

4

2 回答 2

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'

于 2013-07-19T21:30:16.020 回答
0

您必须将 safe_mode = off 或配置 open_basedir 才能访问图像目录。

于 2013-07-24T05:29:17.930 回答