Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 升级到Yosemite后Apache配置中断_Php_Macos_Apache_Osx Yosemite - Fatal编程技术网

Php 升级到Yosemite后Apache配置中断

Php 升级到Yosemite后Apache配置中断,php,macos,apache,osx-yosemite,Php,Macos,Apache,Osx Yosemite,昨天我升级到约塞米蒂,现在我的本地web开发配置不再工作了 我设法在/Users/user/public_html下设置了一个userdir,我可以通过localhost/~user/websitename访问所有网站。没有什么特别的,但我花了一些时间来配置 查看apache目录,我看到许多文件被替换,并保留了一个备份。我再次尝试用我的设置放回文件,但仍然不起作用。也许我丢失了一些我不记得的文件 这是httpd-userdir.conf: # Settings for user home dir

昨天我升级到约塞米蒂,现在我的本地web开发配置不再工作了

我设法在
/Users/user/public_html
下设置了一个userdir,我可以通过
localhost/~user/websitename
访问所有网站。没有什么特别的,但我花了一些时间来配置

查看apache目录,我看到许多文件被替换,并保留了一个备份。我再次尝试用我的设置放回文件,但仍然不起作用。也许我丢失了一些我不记得的文件

这是httpd-userdir.conf:

# Settings for user home directories
#
# Required module: mod_userdir

#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.  Note that you must also set
# the default access control for these directories, as in the example below.
#
UserDir public_html

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf
<IfModule bonjour_module>
       RegisterUserSite customized-users
</IfModule>

<Directory "/Users/*/public_html/">
    AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Order allow,deny
        Allow from all
</Directory>
这是:

DocumentRoot“/用户/用户/公共\u html”

Directory”/Users/user/public\u html>
#
#选项指令的可能值为“无”、“全部”,
#或以下任何组合:
#索引包括以下符号链接符号链接所有者匹配执行CGI多视图
#
#请注意,“多视图”必须显式命名为*--“所有选项”
#不给你。
#
#期权指令既复杂又重要。请看
# http://httpd.apache.org/docs/2.2/mod/core.html#options
#了解更多信息。
#
选项索引跟随符号链接多视图
#
#AllowOverride控制可在.htaccess文件中放置的指令。
#它可以是“全部”、“无”或关键字的任意组合:
#选项FileInfo AuthConfig限制
#
允许超越所有
#
#控制谁可以从此服务器获取内容。
#
命令允许,拒绝
通融
如果我只是尝试访问
localhost
,它会显示消息“it works!”。如果我转到
localhost/user
就不会加载,如果我尝试访问其中一个网站,也不会加载


我漏了什么文件吗?在apache日志中,它甚至没有显示任何错误。

OS X 10.10 Yosemite在Mavericks中提供了apache 2.4,而不是apache 2.2。
配置上的主要区别是您必须替换

Order allow,deny
Allow from all
…与

Require all granted
有关更多详细信息,请参阅ApacheDoc手册

更新:

请注意,升级OS X后,您通常会在Yosemite编写的新配置文件旁边找到旧配置文件作为备份。它们被标记为例如httpd.conf.pre-update和/或httpd.conf~previous,并且可以在与新配置相同的路径中找到(例如/private/etc/apache2)。

在尝试修复此问题6小时后,我终于能够使其正常工作。我编辑了httpd.conf、httpd-userdir.conf、httpd-vhosts.conf等,但都没有用。让所有这些文件都未经yosemite配置编辑,最终对我有效的是编辑位于
/Library/server/Web/Config/apache2/
的httpd_server_app.conf,方法是添加以下内容(针对每个站点),如下所示:


选项+FollowSymLinks
允许超越所有
命令拒绝,允许
全盘否定
选项+索引+跟随符号链接+多视图
允许超越所有
命令允许,拒绝
通融
选项+索引+跟随符号链接+多视图
允许超越所有
命令允许,拒绝
通融

Yosemite将Apache从2.2升级到2.4。配置已更改。您是否启用了mod_userdir模块?此外,您还需要更改“Order”和“Allow”指令。您可能需要查看升级指南,未来的读者可能希望从正确的方式开始。此外,请阅读本文,取消注释httpd.conf中引用userdir的两行,取消注释httpd-userdir.conf中的Include,并在Guest.conf中进行上述更改,最终为我修复了~Guest站点。谢谢@Michael,如果您干净地安装了Apache2.4,您将找不到任何订单或允许行。但是,如果您从Apache 2.2接管现有配置,您肯定会在httpd.conf(例如,遵循DocumentRoot指令行)以及httpd-vhosts.conf(如果您使用虚拟主机)中找到它们。@Jpsy我明白,我要说的是,我已经将所有配置文件都改为灰色(原来是2.2版,但由于优胜美地升级,现在是2.2版和2.4版的混合版)我在这两个文件中都没有看到这些字符串。我只是仔细检查了一下,很明显优胜美地也破坏了我的sshd设置,所以我目前无法远程登录。@Michael,你知道优胜美地不仅重写了你的配置文件,而且还将旧版本作为备份保存吗?它们被标记为httpd.conf.pre-update和/或httpd.conf~以前的,可以在与新配置相同的路径中找到(例如/private/etc/apache2)。我已将此信息添加到我的答案中。@Jpsy谢谢,是的,我知道。我的问题是,它似乎比简单地更改订单/允许要求(根据您发送给我的链接)要复杂一些。
Order allow,deny
Allow from all
Require all granted