【发布时间】: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