Apache不适用于macOS 10.13 High Sierra上的用户Sites文件夹


8

我已遵循此指南在High Sierra上设置Apache:https : //coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

我用它在Sierra上进行了设置。

但是,当我转到http://localhost/~scott/“禁止访问。您无权访问此服务器上的/〜scott /”。

关于这个类似问题的建议:macOS High Sierra上的localhost / userdir是加载虚拟主机。我已经尝试过,但仍然得到“禁止”。

Sierra和High Sierra之间是否有任何更改,这会阻止Apache使用用户Sites文件夹?


尝试apachectl configtest并更新输出
Rakesh kumar

退货Syntax OK
sfyfedotcom


“禁止。您无权访问此服务器上的/〜scott /。”
sfyfedotcom

Answers:


8

当我遇到相同的问题时,这对我有用。

请检查“ /private/etc/apache2/extra/httpd-userdir.conf”文件。

更改

#Include /private/etc/apache2/users/*.conf

Include /private/etc/apache2/users/*.conf

并重新启动apache。

来自:https : //stackoverflow.com/questions/39631351/apache-localhost-403-forbidden-with-macos-sierra


/private/etc/apache2/extra/httpd-userdir.conf我跟随的指令链接中的该行已被取消注释。
sfyfedotcom

你重新启动了Apache“ sudo apachectl restart”
罗伯特·

是。我已经完成了对Apache配置文件的所有更改
sfyfedotcom

4

要允许访问Sites目录,必须将以下内容添加到/etc/apache2/httpd.conf

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

默认的Apache配置在/上设置为拒绝,因此您必须显式允许访问所有内容。


添加并重新启动了Apache。没什么变化
sfyfedotcom

我有同样的问题。正在获得“有效!” 在locahost上,但无法使用户目录工作。像这样修复DirectoryMatch规则即可解决该问题。谢谢!
卡拉

4

只是为了扩展Diogo Lima的答案。

随着升级到High Sierra,Apple复制了以前的apache设置,并在/ etc / apache2和/ etc / apache2 / extra文件夹中的* .conf文件前添加了~~。如果您使用的是虚拟主机或ssl虚拟主机,则还需要移动这些.conf文件的先前版本。

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

这是High Sierra的
全新

因此,为了澄清起见,您已经在Sierra上运行它,但是没有进行升级,而是进行了完整的全新安装?我记得当我设置它在Sierra上运行时,我创建了一个从我的站点文件夹到/ Library / WebServer / Documents文件夹的符号链接,并确保我已授予自己权限(读取和写入)。由于在此阶段听起来仅仅是权限问题,您是否进行了符号链接并更改了权限?
James Martin

对,那是正确的。我总是干净安装新的macOS版本。我知道我可以做到,但是我想同时维护Web项目/Library/WebServer/Documents和将其Users/username/Sites作为单独的位置,因为这是过去10多年来我在macOS上能够做到的。
sfyfedotcom

因此,看起来您需要在同一台计算机上运行两个单独的Apache实例,但这是否不能克服从单个实例运行Apache现在提供的网站进行负载平衡的目的呢?Apple的最佳做法建议是不再使用用户/用户名/站点,而坚持使用图书馆/网络服务器/文档
James Martin

单个Apache实例是从多个目录读取Web项目的电缆。这就是我多年来建立的方式。
sfyfedotcom



1

今天早上才更新。使用/ Users / username中的Sites文件夹。

使用〜previous变体备份并替换了httpd.conf,httpd-userdir.conf和https-vhosts.conf。

跑了sudo apachectl configtest,发现了PHP错误(High Sierra中的PHP更新为7)。编辑了http.conf以启动PHP7,现在一切再次正常。


+1包括注释sudo apachectl configtest
David C

1

可能的解决方案(上述所有建议均失败之后)。问题出在主目录的许可下。对于组/其他人应该是可执行的:

sudo chmod go + x /用户/用户名

其中“用户名”将替换为实际的用户名。在此之后,它起作用了!


0

ew!我自己弄清楚了。

做这些步骤

第1步:打开终端并在下面运行此命令

sudo atom /etc/apache2/httpd.conf

然后通过删除"#"前面的符号来取消注释该行

LoadModule php7_module libexec/apache2/libphp7.so

步骤2:运行下面提到的以下命令

cd /private/etc

sudo cp php.ini.default php.ini

第3步:然后转到您的/Library/WebServer/Documents目录并执行

sudo chown -R  root yourprojectname

返回Safari浏览器并输入 "http://localhost/yourprojectname"

你们都准备好了。

我正在使用MacOS High Sierra 10.13,它已于昨天早上更新。


localhost/Library/WebServer/Documents运行正常。问题localhost/~scott出在/Users/Scott/Sites
sfyfedotcom

0

整个上午都花了时间去弄清楚,但最终还是奏效了。希望这对某人有用。

我遵循了指南,但稍有改动。

现在我可以访问本地主机文件夹,但是...

在高山脉之前,它就像: http://localhost/~username/smomesite.local

现在就像: http://localhost/smomesite.local

不再~username需要。


我不想将默认的Apache Web路径更改为我的用户文件夹。在以前的macOS版本中,我已经能够从Users/myname/Sites目录和/Library/WebServer/Documents
sfyfedotcom

0

我只是遇到了同样的问题,并且想做您想做的事情(将根保留在/ Library / WebServer / Documents,但还允许用户使用Sites文件夹)。我不确定这是否会有所帮助,但是今晚在此敲打了几个小时,逐行浏览所有.conf文件,并想知道出了什么问题后,我意识到httpd进程无法读取我的自己的用户目录。由于某种原因,它被设置为750,而_www用户无法读取它。一旦我通过运行“ chmod 755”修复了该问题。在我的用户目录中,Sites文件夹立即显示。

我不确定自己的用户目录是如何生成的,因为当我创建新用户时,它们似乎默认为755。而且我已经多次仔细检查过我的“站点”文件夹设置为755。


刚刚尝试过,然后重新启动了Apache。仍然“禁止:您无权访问此服务器上的/
〜username

0

我有同样的问题。我对以下两行发表了评论(如另一则答复所建议)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

但是仍然出现相同的错误。对我来说,诀窍是取消注释httpd.conf文件中的这些其他行:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

希望能有所帮助。


我已经对这些台词发表了评论
sfyfedotcom

0

可能是此更新将您所有以前的配置移到了.conf〜previous文件中。如果将/etc/apache2/extra/httpd-userdir.conf~移至/etc/apache2/extra/httpd-userdir.conf之前,和/etc/apache2/extra/httpd.conf~移至/ etc / apache2 /之前的位置extra / httpd.conf,它应该像以前一样工作。

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

这是High Sierra的
全新

0

我有同样的问题。分辨率很容易。请参阅此处发布的答案:https : //apple.stackexchange.com/a/306390/129503

在今天早些时候升级到High Sierra之后,我面临着同样的问题。我发现以下apache文件已替换为全新版本。幸运的是,对于所有这些文件,在同一文件夹中存在一个FILE〜previous文件。我只是将〜previous版本复制回原始版本,重新启动了Apache,一切都很好。

在文件夹中/etc/apache2

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

例:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

更换

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

来自较旧的〜以前的文件。

您可能会在httpd.conf中得到php5模块错误,将php5替换为php7,您的网站应该会开始工作。

更换

LoadModule php5_module libexec/apache2/libphp5.so

LoadModule php7_module libexec/apache2/libphp7.so

0

我刚刚升级,并遇到了完全相同的问题。我不使用虚拟主机。我的解决方案是确保:

https.conf取消注释

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

并确保extra/httpd-user.conf该行:

UserDir Sites
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.