【问题标题】:Apache2 - Broken images load from remote serverApache2 - 从远程服务器加载损坏的图像
【发布时间】:2020-07-03 20:52:15
【问题描述】:

我有一个在 Ubuntu 18.04 下运行的 apache2 服务器

奇怪的是,apache 无法显示图像,事件虽然我的浏览器加载了 200 响应消息。

如果直接触发图片链接,可以下载成功,但是图片打不开(格式错误),好像坏了一样。

这个网站曾经在另一个配置大致相同的 apache2 上工作。

我尝试将图像文件放入默认文件夹(var/www)并使用简单的 src 显示它,它可以工作!

我拒绝显示图片的网站在 apache2.conf 中有这样的配置:

<Directory /var/www>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

虚拟主机看起来像这样:

<VirtualHost *:80>
    ServerName nasticot.lan
    DocumentRoot /var/www/nasticot.lan
    ServerAlias www.nasticot.lan
</VirtualHost>

/var/www 是从远程容器挂载的 SMB 共享。 服务器对该共享中的每个文件都拥有完全权限 (777)

网站根目录下还有一个.htaccess文件

# Rewrite URL like xxx/yyy/zzz in index.php?controleur=xxx&action=yyy&id=zzz
RewriteEngine on
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controleur=$1&action=$2&id=$3 [NC,L]

[编辑]

奇怪的是,apache2 在加载时将内容添加到我的图像中。

我再次验证了我的图像可以直接显示在我的 apache2 服务器读取的文件夹中,并且可以正常工作。

如果我从浏览器本地下载图片,图片会多添加几行。

[编辑-01]: 我的 /var/www 是一个挂载的共享,位于我的文件服务器中。 我发现这是问题所在。如果我在本地复制我的一个网站的内容,则会显示图像。

虽然我对已安装的共享具有完全访问权限,但事件:

root@coruscant:/var/www/nasticot.lan/Content/img/icon# ls -la /var/www
total 4
drwxrwxrwx  2 root www-data    0 Mar 20 15:54 .
drwxr-xr-x 14 root root     4096 Mar 20 19:31 ..
drwxrwxrwx  2 root www-data    0 Mar 24 11:08 nasticot.lan

这是文件服务器中的共享配置:

[WWW]
    path = /media/share/www
    browseable = yes
    writeable = yes
    read only = no
    force create mode = 0770
    force directory mode = 2770
    valid users = @sambashare

最后,网络服务器上的 fstab 文件:

//192.168.0.53/WWW       /var/www    cifs    credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777,gid=www-data       0 0

图像文件已加载(200 OK)但损坏..

[EDIT-02]

仍在寻找解决方案,我很确定这不是权限问题,即使使用 777 也会出现问题...

我想知道php是否会在加载时破坏图像,我尝试设置

php.ini

error_reporting = E_ALL
error_log = /var/log/php_errors.log

但是我没有写入这个日志文件所以..真的不知道在哪里搜索..

任何帮助将不胜感激

有什么想法吗?

谢谢!

【问题讨论】:

    标签: image apache2 ubuntu-18.04


    【解决方案1】:

    解决方法是在Directory 块中添加EnableSendFile on 指令,但不能解释原因。

    我说这是一种解决方法,因为在我对相同问题的诊断中(环境:Laravel Homestead 11 Vagrant guest,使用 Hyper-V 和 smb 挂载的 Windows 10 主机),只有在使用 HTTP 时才会发生 - HTTPS 工作正常,这使它成为最奇怪的事情

    【讨论】:

    • 几周前我找到了相同的解决方案,我正要在这里发布它,我看到你回答了!该指令解决了问题!我的图像现在已正确加载。非常感谢您的支持;)
    猜你喜欢
    • 2011-05-15
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多