即使在编辑httpd.conf之后,Xampp图像也不会加载


Xampp images not loading even after editing httpd.conf

所以我在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)存储在与'image1'相同路径的/img子文件夹中。

我的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以来error_log中的所有条目,以防有帮助:

    [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中的文件,以避免面临我所面临的问题,并了解了艰难的方式。

因此,在我的系统几乎崩溃(纯粹是我自己的错误)之后,当我试图更改拥有文件的权限时,我意识到有一个简单的解决方案可以解决上述问题。你不需要改变整个文件夹'/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

这基本上给你所有的权限有关的所有图像存储在该文件夹中。干杯!

在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+

更新的