我正在使用 Apache/httpd 的 Homebrew 版本。我已禁用 Mac OOTB 版本。
如果我禁用/注释以下内容,我的本地主机将正确从 /Users/lamba/www/index.html 中调出index.html。
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
但是,当我取消注释它时,我在浏览器(Chrome)中收到 ERR_CONNECTION_REFUSED 错误。即使使用 Trace8 级别的日志记录,我也没有在日志中看到任何有用的内容。
我已向所有用户授予 /Users/lamba/www 及以下的 r 访问权限。以及对 /Users/lamba/Projects 及以下所有用户的 r、x 访问权限(我认为 index.php 可能需要 x 访问权限)。
我的 Apache/httpd 配置的重要部分:
httpd.conf
Listen 80
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule php_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp.so
DocumentRoot "/Users/lamba/www"
<Directory "/Users/lamba/www">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/Users/lamba/Projects/Magento-Open-Source/pub"
ServerName local.m2os.com
ErrorLog "/usr/local/var/log/httpd/m2os-error_log"
CustomLog "/usr/local/var/log/httpd/m2os-access_log" common
<Directory "/Users/lamba/Projects/Magento-Open-Source/pub">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Header always set Strict-Transport-Security "max-age=0"
DirectoryIndex index.php
</VirtualHost>
/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
127.0.0.1 local.m2os.com
255.255.255.255 broadcasthost
::1 localhost
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
127.0.0.1 ::1 magento.test
经过更多考虑,我认为这不是虚拟主机问题,因为(禁用虚拟主机后)我也无法将本地主机指向真实项目的根目录。我的项目根目录有一个index.php 文件,日志表明Apache 能够找到该文件。但随后由于某种原因它会发送 302 响应而不是执行脚本。在我包含 PHP 模块之前,它显示了 login.php 的内容,但又不执行它。我仍然希望能够帮助您弄清楚如何让 Apache 执行 index.php。另外,我已将 index.php 添加到 DirectoryIndex 指令中。
一个更尖锐的问题是,如何更改我的 DocumentRoot?我已将 DR 设置为 /Users/lamba/Projects/Magento-Open-Source/pub 在 /usr/local/etc/httpd/httpd.conf 中。但是,当我运行“brew info httpd”时,它报告默认 DR /usr/local/var/www。所以,我猜这就是我麻烦的根源。我该如何改变它?
Homebrew 之前的世界中的主conf 曾经是000-default.conf。该文件在 Homebrew 世界中在哪里?
更新:如果我隐藏index.php,Apache会成功从同一位置加载index.html。所以,这似乎是一个 PHP 问题。
更新2:我在我的pub文件夹中创建了一个简单的虚拟index.php,Apache正在很好地提供它。所以,我相信现在这是一个 Magento 问题(使用 Magento 的 index.php)。仍在挖掘。
终于通过切换到 Nginx 来加载管理页面。 Nginx 具有更好的错误日志记录,这帮助我确定问题出在不受信任的 SSL 证书上。所以我将其添加为可信。由于“混合内容”错误,管理页面的某些内容显示 404,这意味着 HTTPS 页面上的某些内容是通过 HTTP 获取的。店面主页仍然无法加载,并显示错误“重定向您太多次。请尝试删除您的 cookie。”欢迎反馈和评论。