【问题标题】:Display images on site from folder outside public_html folder从 public_html 文件夹外的文件夹在站点上显示图像
【发布时间】:2014-03-07 13:18:45
【问题描述】:

我正在使用 codeingiter 并在其中有一个图像目录。由于空间问题,我已将整个目录转移到同一台服务器上的新位置。

之前的路径是 /var/www/html/site_folder/assets/images

新位置是 /home/new_site/images

现在当我想在网站上显示图像时,它没有加载。

我尝试过使用下面的代码

$file = '/home/new_site/images/3.jpg';

header('Content-Type: image/jpeg');

echo "

我有大约 50 张图片,我想将它们加载到我的网站上。

这适用于本地但不适用于服务器。我在本地使用 Linux,在服务器上使用 Centos

【问题讨论】:

    标签: php linux


    【解决方案1】:

    你把事情搞混了。您要做的是返回图像文件的内容,但您返回的是 HTML 片段。

    您可以尝试多种解决方案:

    1. 创建一个指向新图像目录的符号链接,大多数东西都可以保持原样。根据您的网络服务器配置,此方法可能会或可能不起作用。
    2. 更改对图片的所有引用

      src="image5.jpg"

      对某事

      src="image.php?name=image5.jpg"

    然后你需要脚本“image.php”,它将图像的名称作为查询参数,然后返回内容:

    <?php
        // take care to make some clever checks here
        // otherwise you introduce a security nightmare
        $file = '/home/new_site/images/'  . htmlspecialchars($_GET["name"]);
    
        header('Content-Type: image/jpeg');
    
        readfile($file);
    ?>
    

    【讨论】:

    • 嗨,你的意思是说我必须创建一个文件 image.php 并将下面的代码放入其中 $file = '/home/new_site/images/' 。 htmlspecialchars($_GET["name"]); header('Content-Type: image/jpeg');读取文件($file);
    • 是的,您必须将原始图像数据传递给浏览器。该脚本未经测试,但它应该让您了解如何完成它。
    • 所以如果有 100 张图片,那么我将不得不写一个 foreach..?
    • 也许你没有正确描述你的问题。该代码应该可以帮助您参考 HTML 代码中的图像。您的图像已移动,这意味着您必须更改已移动图像的“src”属性。如果您将图像移出目录,Web 服务器可以直接访问,您需要某种魔法/代理来获取这些文件的数据。这就是 PHP 脚本应该做的事情。
    • 嗨,我已经在本地尝试了上述解决方案并且它有效,但是当我将相同的代码提升到服务器时,它显示损坏的图像。图像存在于该目录中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 2018-12-07
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多