Xampp 图片即使在编辑后也未加载 httpd.conf
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'
我也添加了行 'Require all granted' 但我仍然没有找到解决方案。
该代码使用了我能想到的所有可能的图像路径组合:
<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/
这是 error_log 中的所有条目,因为我重新启动 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 中的文件,以避免遇到我遇到过并从困难中了解到的问题。
在您的 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+ 更新的
因此,在我的系统几乎崩溃(完全是我自己的错误)之后,在尝试更改拥有文件的权限时,我意识到有一个简单的解决方案可以解决上述问题。您不需要更改整个文件夹“/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
到目前为止,在全新安装后,这对我来说是有效的。我在卸载时丢失了我的数据库,所以我需要一段时间才能证实图像部分是否有效,但至于到目前为止设置权限,这是绝对允许访问的,而不是通常的 'Acces denied' 消息如果 htdocs 的所有权不同。
如果即使在此之后图像仍无法加载引用 'Access denied',那么我建议您导航到 htdocs 中的 'yourwebsite' 文件夹并使用上述相同版本手动更改图像文件的所有权命令改为 *.jpg。
编辑:它似乎不起作用,但现在我在将 phpmyadmin 连接到数据库时遇到了问题,所以我还需要一段时间才能很好地测试它。
解决方案:最终解决了问题
不要轻易使用'chown' 或'chmod' 命令。我已经做到了,相信我,在那之后恢复到初始配置并不是小菜一碟。所以我遇到这个问题已经有一段时间了,我终于想出了一个解决方案,虽然它只是作为最后的手段使用:
sudo chmod -R 777 /opt/lampp/htdocs/path/to/image/folder
这基本上为您提供了与存储在该文件夹中的所有图像相关的所有权限。干杯!
所以我在 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' 我也添加了行 'Require all granted' 但我仍然没有找到解决方案。
该代码使用了我能想到的所有可能的图像路径组合:
<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/
这是 error_log 中的所有条目,因为我重新启动 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 中的文件,以避免遇到我遇到过并从困难中了解到的问题。
在您的 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+ 更新的
因此,在我的系统几乎崩溃(完全是我自己的错误)之后,在尝试更改拥有文件的权限时,我意识到有一个简单的解决方案可以解决上述问题。您不需要更改整个文件夹“/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
到目前为止,在全新安装后,这对我来说是有效的。我在卸载时丢失了我的数据库,所以我需要一段时间才能证实图像部分是否有效,但至于到目前为止设置权限,这是绝对允许访问的,而不是通常的 'Acces denied' 消息如果 htdocs 的所有权不同。
如果即使在此之后图像仍无法加载引用 'Access denied',那么我建议您导航到 htdocs 中的 'yourwebsite' 文件夹并使用上述相同版本手动更改图像文件的所有权命令改为 *.jpg。
编辑:它似乎不起作用,但现在我在将 phpmyadmin 连接到数据库时遇到了问题,所以我还需要一段时间才能很好地测试它。
解决方案:最终解决了问题
不要轻易使用'chown' 或'chmod' 命令。我已经做到了,相信我,在那之后恢复到初始配置并不是小菜一碟。所以我遇到这个问题已经有一段时间了,我终于想出了一个解决方案,虽然它只是作为最后的手段使用:
sudo chmod -R 777 /opt/lampp/htdocs/path/to/image/folder
这基本上为您提供了与存储在该文件夹中的所有图像相关的所有权限。干杯!