好的,所以我以前设置了两个虚拟主机,它们工作正常.它们都包含简单的Web项目,http://project1并且可以http://project2在浏览器中正常工作.
无论如何,我来添加另一个vhost.我使用127.0.0.1 project3编辑了/ etc/hosts文件,并通过复制和粘贴project2的先前条目并编辑文件路径来更新httpd-vhosts.conf文件.
我已经检查了所有文件和文件夹权限(实际上我是从project2复制并粘贴的),只是在index.php文件中放了一个"hello world"消息.
访问时我收到403禁止权限被拒绝的消息 http://project3
为什么这样,我只能弄清楚我错过了什么步骤,因为一切似乎都设置正确.
提前致谢.
blu*_*112 24
检查:
此外,您可以查看error.log文件(通常位于/var/log/apache2/error.log),该文件将描述您为何准确收到403错误.
最后,您可能想要重新启动apache,以确保应用所有配置.这通常可以用/etc/init.d/apache2 restart.在某些系统上,该脚本将被称为httpd.弄清楚.
Cam*_*son 11
我只是在挣扎了几天后解决了这个问题.这对我有用:
首先,检查您的Apache error_log文件并查看最新的错误消息.
如果它说的话:
access to /mySite denied (filesystem path
'/Users/myusername/Sites/mySite') because search permissions
are missing on a component of the path
Run Code Online (Sandbox Code Playgroud)
那么您的文件权限就会出现问题.您可以通过从终端运行以下命令来修复它们:
$ cd /Users/myusername/Sites/mySite
$ find . -type f -exec chmod 644 {} \;
$ find . -type d -exec chmod 755 {} \;
Run Code Online (Sandbox Code Playgroud)
然后,刷新您的网站所在的URL(例如http://localhost/mySite).如果您仍然收到403错误,并且您的Apache error_log仍然说同样的事情,那么逐步向上移动目录树,随时调整目录权限.您可以通过以下方式从终端执行此操作:
$ cd ..
$ chmod 755 mySite
Run Code Online (Sandbox Code Playgroud)
如有必要,继续:
$ cd ..
$ chmod Sites
Run Code Online (Sandbox Code Playgroud)
并且,如有必要,
$ cd ..
$ chmod myusername
Run Code Online (Sandbox Code Playgroud)
不要再往上走了.你可能会搞砸你的系统.如果你仍然收到错误search permissions are missing on a component of the path,我不知道你应该怎么做.但是,我遇到了一个不同的错误(下面的错误),我修复如下:
如果你error_log说的话:
client denied by server configuration:
/Users/myusername/Sites/mySite
Run Code Online (Sandbox Code Playgroud)
那么你的问题不是你的文件权限,而是你的Apache配置.
请注意,在您的httpd.conf文件中,您将看到这样的默认配置(Apache 2.4+):
<Directory />
AllowOverride none
Require all denied
</Directory>
Run Code Online (Sandbox Code Playgroud)
或者像这样(Apache 2.2):
<Directory />
Order deny,allow
Deny from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
不要改变这个!我们不会全局覆盖这些权限,而是覆盖在您的httpd-vhosts.conf文件中.但是,首先,请确保您的虚拟主机Include的线路httpd.conf是取消注释.它看起来应该是这样的.(您的确切路径可能会有所不同.)
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)
现在,打开httpd-vhosts.conf你刚才的文件Include.如果您还没有,请为您的网页添加条目.看起来应该是这样的.该DocumentRoot和Directory路径应该是相同的,而应指向哪里你index.html或index.php文件的位置.对我来说,这是在public子目录中.
对于Apache 2.2:
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/Users/myusername/Sites/mySite/public"
ServerName mysite
# ErrorLog "logs/dummy-host2.example.com-error_log"
# CustomLog "logs/dummy-host2.example.com-access_log" common
<Directory "/Users/myusername/Sites/mySite/public">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这句话说
AllowOverride All
Require all granted
Run Code Online (Sandbox Code Playgroud)
对Apache 2.4+至关重要.如果没有这些,您将不会覆盖指定的默认Apache设置httpd.conf.请注意,如果您使用的是Apache 2.2,请注意这些行
Order allow,deny
Allow from all
Run Code Online (Sandbox Code Playgroud)
这个变化一直是这个问题的googlers混淆的主要原因,比如我,因为复制粘贴这些Apache 2.2行在Apache 2.4+中不起作用,并且Apache 2.2行仍然常见于较旧的帮助线程.
保存更改后,重新启动Apache.此命令将取决于您的操作系统和安装,因此如果您需要帮助,请单独使用谷歌.
我希望这有助于其他人!
PS:如果您在查找这些.conf文件时遇到问题,请尝试运行该find命令,例如:
$ find / -name httpd.conf
Run Code Online (Sandbox Code Playgroud)
小智 7
restorecon 命令的工作原理如下:
restorecon -v -R /var/www/html/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107447 次 |
| 最近记录: |