【问题标题】:Xampp images not loading even after editing httpd.conf即使在编辑 httpd.conf 后 Xampp 图像也不会加载
【发布时间】:2016-01-24 12:55:15
【问题描述】:

所以我在 Linux 上使用 Xampp 来测试一些网页,我遇到了将图像从本地文件系统加载到服务器的问题

Access forbidden!

You don't have permission to access the requested object. It is either read-protected or not readable by the server.

If you think this is a server error, please contact the webmaster.

Error 403

到目前为止,我已经看到了很多类似的问题,我已经相应地编辑了 httpd.conf 文件以及“Project1_July2015”的目录,这是我在“htdocs”中的项目文件夹 我还添加了“要求全部授予”行,但我仍然没有找到解决方案。

代码使用了我能想到的图像路径的任何可能组合:

<img src="image1">
<img src="image1.jpg">
<a href="image1.jpg">image1</a>

<?php
    $link1="img/1/image2";
    $name="/image2";
    $link="img";
?>
<img src="<?php echo $link;echo $name;?>">
<img src="<?php echo $link1;?>">
<img src="/opt/lampp/htdocs/Project1_July2015/image2">

如您所见,我将“image1”以 JPEG 格式存储在文件夹 /opt/lampp/htdocs/MyProject_2015 中,而“image2”(也是 JPEG)存储在 /img 的子文件夹中与“image1”相同的路径。

我的 httpd.conf 文件路径是 /opt/lampp/apache2/conf,其内容现在类似于:

Alias /bitnami/ "/opt/lampp/apache2/htdocs/"
Alias /bitnami "/opt/lampp/apache2/htdocs"

<Directory "/opt/lampp/htdocs/">
    Require all granted
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

是我弄乱了我的目录的路径,我的图像的路径不正确,还是我的代码有其他问题?

这就是 error_log 查找最后几个条目的方式:

[Sun Oct 25 15:40:51.917516 2015] [core:error] [pid 4946] (13)Permission denied: [client 127.0.0.1:55332] AH00132: file permissions deny server access: /opt/lampp/htdocs/Project1_July2015/img/image1.jpg, referer: http://localhost/Project1_July2015/img/

这是错误日志中的所有条目,因为我重新启动了 xampp,以防万一:

    [Sun Oct 25 16:04:39.411323 2015] [mpm_prefork:notice] [pid 4540] AH00169: caught SIGTERM, shutting down
[Sun Oct 25 16:04:46.002063 2015] [ssl:warn] [pid 5513] AH01906: www.example.com:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Sun Oct 25 16:04:46.002277 2015] [ssl:warn] [pid 5513] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Oct 25 16:04:46.002695 2015] [suexec:notice] [pid 5513] AH01232: suEXEC mechanism enabled (wrapper: /opt/lampp/bin/suexec)
[Sun Oct 25 16:04:46.056649 2015] [auth_digest:notice] [pid 5514] AH01757: generating secret for digest authentication ...
[Sun Oct 25 16:04:47.002128 2015] [ssl:warn] [pid 5514] AH01906: www.example.com:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Sun Oct 25 16:04:47.002251 2015] [ssl:warn] [pid 5514] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Sun Oct 25 16:04:47.002607 2015] [lbmethod_heartbeat:notice] [pid 5514] AH02282: No slotmem from mod_heartmonitor
[Sun Oct 25 16:04:47.016544 2015] [mpm_prefork:notice] [pid 5514] AH00163: Apache/2.4.12 (Unix) OpenSSL/1.0.1m PHP/5.6.8 mod_perl/2.0.8-dev Perl/v5.16.3 configured -- resuming normal operations
[Sun Oct 25 16:04:47.016596 2015] [core:notice] [pid 5514] AH00094: Command line: '/opt/lampp/bin/httpd -E /opt/lampp/logs/error_log -D SSL -D PHP'
[Sun Oct 25 16:04:53.915959 2015] [core:error] [pid 5916] (13)Permission denied: [client 127.0.0.1:55552] AH00132: file permissions deny server access: /opt/lampp/htdocs/Project1_July2015/img/image1.jpg, referer: http://localhost/Project1_July2015/img/

sudo chown -R www-data:www-data /opt/lampp 并编辑 httpd.conf 文件以反映

<VirtualHost *:80>
 ServerName myhost
 ServerAlias myhost.mydomain.com
 DocumentRoot /opt/lampp/htdocs

<Directory "/opt/lampp/htdocs">
    Options +Indexes +FollowSymLinks +MultiViews
    AllowOverride None
    Require all granted
</Directory>
LogLevel error
ErrorLog /opt/lampp/logs/default-http-error.log
CustomLog /opt/lampp/logs/default-http-access.log combined

立即在页面上显示以下错误。它不再加载了:

Warning: session_start(): open(/opt/lampp/temp//sess_3kkj6u86hfagsndsp4hdkljct1, O_RDWR) failed: Permission denied (13) in /opt/lampp/htdocs/Project1_July2015/verify_blacklisted.php on line 2
New session start successful
3kkj6u86hfagsndsp4hdkljct1

127.0.0.1

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1017 Can't find file: './user_list/login_attempts.frm' (errno: 13 - Permission denied)' in /opt/lampp/htdocs/Project1_July2015/verify_blacklisted.php:16 Stack trace: #0 /opt/lampp/htdocs/Project1_July2015/verify_blacklisted.php(16): PDOStatement->execute() #1 /opt/lampp/htdocs/Project1_July2015/index.php(2): include('/opt/lampp/htdo...') #2 {main} thrown in /opt/lampp/htdocs/Project1_July2015/verify_blacklisted.php on line 16

Warning: Unknown: open(/opt/lampp/temp//sess_3kkj6u86hfagsndsp4hdkljct1, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/opt/lampp/temp/) in Unknown on line 0

重要提示:到目前为止,我没有意识到也没有引起我注意的是有两个 httpd.conf 文件。一个在 opt/lampp/apache2 /conf 中,而另一个在 /opt/lampp/etc 中。 当建议您编辑 httpd.conf 文件时,请考虑 /opt/lampp/etc 中的文件,以避免遇到我遇到的问题并通过艰难的方式了解到。

【问题讨论】:

  • 检查服务器的错误日志。
  • 编辑了问题以包含错误日志的详细信息。
  • 你为什么要为 URL 路径 /bitnami/ 设置别名,然后不在任何地方使用该路径?
  • 所以我确实有一个工作网站,它不允许显示任何图像,但自从更改所有权后,它突然引用“权限被拒绝”不允许访问任何内容。我尝试将 /opt/lampp/ 的所有权更改为我认为的原始所有者 ssm,但它似乎没有改变任何东西,因为尽管所有权发生了变化,但它仍然拒绝访问。 httpd.conf 文件也恢复到问题中所述的原始详细信息。 @CBroe 我没有使用别名,该位已存在于原始代码中。

标签: php apache xampp httpd.conf


【解决方案1】:

在您的 apache2.conf 中,这些行应该在那里:

<Directory "/">
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>
<Directory "/usr/share">
    AllowOverride None
    Require all granted
</Directory>
<Directory "/opt/lampp">
    AllowOverride All
    Require all granted
</Directory>

还有你的 httpd.conf 或任何应该有这些的:

 <VirtualHost *:80>
     ServerName myhost
     ServerAlias myhost.mydomain.com
     DocumentRoot /opt/lampp/htdocs

    <Directory "/opt/lampp/htdocs">
        Options +Indexes +FollowSymLinks +MultiViews
        AllowOverride None
        Require all granted
    </Directory>
    LogLevel error
    ErrorLog /opt/lampp/logs/default-http-error.log
    CustomLog /opt/lampp/logs/default-http-access.log combined
</VirtualHost>

确保在 /opt/lampp 下创建空白文件夹“logs”,以便存放您的日志报告。

最后是sudo chown -R www-data:www-data /opt/lampp

这是根据 Apache2.4+ 更新的

【讨论】:

  • httpd.conf 文件是否需要有 Alias 行,或者我是否只用您在上面发布的代码替换整个内容?
  • 将 httpd.conf 文件编辑为仅上述内容,但仍然显示相同的错误。
  • sudo chown -R www-data:www-data /opt/lampp 是您需要为您的网站设置权限
  • 我编辑了 httpd.conf 但似乎没有 apache2.conf 文件。此外,该文件夹是存储 httpd.conf 文件的 opt/lampp/apache2/conf。知道为什么 apache2 而不是我到处提到的 apache,还是只是 Windows 和 Linux 在文件命名和结构上的差异?我正在使用 Linux。此外,已经有一个日志文件夹,其中存储了我在上面问题中提到的所有系统日志和错误详细信息。很抱歉占用你这么多时间,但我似乎无法让它工作。是的,我每次编辑文件时都会重新启动它。
  • 你好——我也运行linux。我将使用 Xampp 进行新的测试运行,看看我能做些什么来调整你的情况。擦亮眼睛。
【解决方案2】:

因此,在我的系统几乎崩溃(纯粹是我自己的错误)之后,在尝试更改拥有文件的权限时,我意识到上述问题有一个简单的解决方案。您不需要更改整个文件夹 '/opt/lampp' 的所有权,因为这可能会也可能不会导致问题(对我来说确实如此),您只需要:

$ cd /opt/lampp/htdocs

$ whoami

这使您能够找出应该是您的文件夹 htdocs 的所有者,但如果不是简单地运行命令:

$ sudo chown -R www-data(rootusername):www-data(rootusername) *

由于您已经导航到 htdocs,您可以使用 ' * ' ;但是,如果你没有,我建议你使用:

$ sudo chown -R www-data(rootusername):www-data(rootusername) /opt/lampp/htdocs

到目前为止,在全新安装之后,这对我来说很有效。我在卸载时丢失了我的数据库,所以我需要一段时间才能确认图像部分是否有效,但至于设置权限到目前为止,这绝对是允许访问而不是通常的“访问被拒绝”消息htdocs 所有权不同的情况。

如果即使在此之后图像无法加载引用“访问被拒绝”,那么我建议您导航到 htdocs 中的“yourwebsite”文件夹,并使用与 *.jpg 相同版本的上述命令手动更改图像文件的所有权而是。

编辑:它似乎不起作用,但现在我在将 phpmyadmin 连接到数据库时遇到了问题,所以我需要一段时间才能很好地测试它。

解决方案:终于解决了问题

不要轻易使用 'chown' 或 'chmod' 命令。我已经做到了,相信我,在那之后恢复到初始配置不是小菜一碟。所以我这个问题已经有一段时间了,我终于想出了一个解决方案,尽管它只是作为最后的手段:

sudo chmod -R 777 /opt/lampp/htdocs/path/to/image/folder

这基本上为您提供了与存储在该文件夹中的所有图像有关的所有权限。干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 2013-03-27
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多