在Mac OS X Yosemite上运行本地主机

19

我已经将我的操作系统更新为Yosemite,唯一的问题是我的本地主机不再工作。如果这个问题听起来很愚蠢,请原谅,因为我对服务器的知识有限。

在Mavericks中,我能够在系统启动后立即使用localhostcustomdomain.dev。此外,我的MySQL服务器也可以在没有任何操作的情况下启动。

现在,当使用localhost时,Google Chrome会抛出一个ERR_CONNECTION_REFUSED错误。

我运行:

apachectl configtest

返回

httpd: Syntax error on line 58 of /private/etc/apache2/httpd.conf: Cannot load libexec/apache2/mod_authn_default.so into server: dlopen(/usr/libexec/apache2/mod_authn_default.so, 10): image not found

如果我注释掉这一行,它会继续加载其他模块。当我注释掉所有导致语法错误的模块时,我会得到

AH00526: Syntax error on line 131 of /private/etc/apache2/httpd.conf:
Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration

我正在使用Mavericks中的httpd.conf文件(一切都正常工作),但是我不知道接下来该怎么做。


不确定如何使用 apachectl,但我真的很喜欢 MAMP 免费版(http://www.mamp.info/en/)。非常适合在本地运行 Apache 服务器。 - jkjustjoshing
我不喜欢每次开机都启动一个应用程序 - 以前可以,为什么现在不行了呢? - Xaver
尝试备份您的sites_available文件夹并重新安装。问题是否仍然存在? - Qix - MONICA WAS MISTREATED
@七星,抱歉,请问我应该怎么做? - Xaver
我遇到了错误apachectl configtest AH00558: httpd: 无法可靠地确定服务器的完全限定域名,使用buildserver.local。全局设置'ServerName'指令以抑制此消息,如何修复? - vikramvi
4个回答

34

您是否保留了之前的httpd.conf文件?您可能需要编辑httpd.conf中的模块。

我发现随着Yosemite一起来了一个Apache升级。显然,从Apache 2.2到2.4有几个与身份验证相关的更改。我不得不重复运行sudo apachectl configtest来显示要删除哪些模块。

然后,我需要添加一些模块。我的模块现在看起来像这样:

LoadModule authn_file_module libexec/apache2/mod_authn_file.so
LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_default_module libexec/apache2/mod_authn_default.so
LoadModule authn_core_module libexec/apache2/mod_authn_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache2/mod_authz_user.so
LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_default_module libexec/apache2/mod_authz_default.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
LoadModule cache_module libexec/apache2/mod_cache.so
#LoadModule disk_cache_module libexec/apache2/mod_disk_cache.so
#LoadModule mem_cache_module libexec/apache2/mod_mem_cache.so
LoadModule dbd_module libexec/apache2/mod_dbd.so
LoadModule dumpio_module libexec/apache2/mod_dumpio.so
LoadModule reqtimeout_module libexec/apache2/mod_reqtimeout.so
LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule filter_module libexec/apache2/mod_filter.so
LoadModule substitute_module libexec/apache2/mod_substitute.so
LoadModule deflate_module libexec/apache2/mod_deflate.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule log_forensic_module libexec/apache2/mod_log_forensic.so
LoadModule logio_module libexec/apache2/mod_logio.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule cern_meta_module libexec/apache2/mod_cern_meta.so
LoadModule expires_module libexec/apache2/mod_expires.so
LoadModule headers_module libexec/apache2/mod_headers.so
#LoadModule ident_module libexec/apache2/mod_ident.so
LoadModule usertrack_module libexec/apache2/mod_usertrack.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule version_module libexec/apache2/mod_version.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
#LoadModule proxy_balancer_module libexec/apache2/mod_proxy_balancer.so
LoadModule ssl_module libexec/apache2/mod_ssl.so
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule status_module libexec/apache2/mod_status.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
LoadModule asis_module libexec/apache2/mod_asis.so
LoadModule info_module libexec/apache2/mod_info.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
LoadModule imagemap_module libexec/apache2/mod_imagemap.so
LoadModule actions_module libexec/apache2/mod_actions.so
LoadModule speling_module libexec/apache2/mod_speling.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule perl_module libexec/apache2/mod_perl.so
#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule unixd_module libexec/apache2/mod_unixd.so
LoadModule access_compat_module libexec/apache2/mod_access_compat.so
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

你会发现我注释掉了一些东西。也有一些新的。两个_core_unixd_moduleaccess_compat_module是新的。不要管那个看起来奇怪的PHP模块。那来自Homebrew的PHP。

我还必须在httpd-mpm.conf中删除LockFile指令。以及在httpd-vhosts.conf中的NameVirtualHost指令。

希望这可以帮到你。


9
谢谢您的提示。我将/etc/apache2/original/httpd.conf复制到/etc/apache2/httpd.conf,服务器又可以正常工作了。我需要重新配置该文件以满足我的需求,但这不是问题。谢谢! - Xaver
5
当出现这个问题时,我后悔升级到Yosemite。10分钟后,问题解决了。 愿溢出之恩降临...... - GusOst
2
谢谢你;今天我处理这个问题时已经失去了生活的意志。最后,我还不得不添加:(1)LoadModule authz_core_module libexec/apache2/mod_authz_core.so来解决错误信息Invalid command 'Require',也许拼写错误或由未包含在服务器配置中的模块定义。请参见:https://dev59.com/n2Mk5IYBdhLWcg3w7CKX (2)从http://mac-dev-env.patrickbougie.com/apache/的“配置文件”部分。 - Nick
太棒了——我只需要删除php文件! - alexoviedo999

1

0
添加此模块似乎可以解决:无效命令“User”。
LoadModule unixd_module modules/mod_unixd.so

0

除了Stephen Farmers非常好的回答之外,我还必须添加另一个模块。

LoadModule slotmem_shm_module libexec/apache2/mod_slotmem_shm.so

否则,Apache 的日志将会被填满类似以下的消息:
[proxy_balancer:emerg] [pid 25593] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??

然后它就无法启动。

现在正常运行。

链接到此错误的Apaches bugzilla报告


1
我认为注释掉 proxy_balancer_module 对我有帮助。但我不能完全确定。因为在我的开发机器上我没有使用负载均衡器。 - Stephen Farmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接