我如何指定我希望我的 Mac 使用哪个 Apache 安装?

我如何指定我希望我的 Mac 使用哪个 Apache 安装?

我遇到的所有问题都源于尝试安装 PHP 的 mcrypt。昨晚我放弃了,按照教程如何安装全新的 apache2 和 php5.3.3。我使用 macports 完成此操作

遗憾的是,昨晚我没有启用 mcrypt,尽管我很高兴能运行 5.3.3 :)

问题是,我今天早上醒来发现我的 php 版本又降回了 5.3.1,这只能意味着 OS X 已经恢复到我原来的 Apache 和 PHP。

我如何告诉 OS X 使用我通过 macports 安装的软件?

(然后我会问一个新问题:如何启用 mcrypt)

NB我可以通过在系统首选项中停止当前的 Web 共享,然后在终端中执行此操作来加载 macports 安装

 sudo /opt/local/apache2/bin/apachectl -k restart

答案1

这并不是说您的 Apache/PHP 版本已被恢复 - 只是加载了错误的版本。

如果您启用了 Mac OS X 的 Web 共享,它将自动启用 Apple 使用 LaunchDaemon 提供的 Apache 和 PHP 版本org.apache.httpd.plist/System/Library/LaunchDaemons这将覆盖 MacPorts 版本)。您可以通过在共享偏好设置窗格中关闭 Web 共享或运行 来禁用此功能sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

当您安装适用于 MacPorts 的 Apache 时,它​​会安装一个 LaunchDaemon,/Library/LaunchDaemons如果启用,它将自动启动 MacPorts 版本的 Apache。要启用它,请运行它sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist,然后您就可以开始比赛了。

如果你正在运行apachectl重新启动 - 请确保你选择了正确的版本。你可能需要修改你的 $PATH 以/opt/local/apache2/bin使其/usr/sbin

至于使用哪个版本的 PHP;在命令行上这将取决于您的 $PATH,而对于 Apache,它完全取决于您对 libphp5 模块位置的配置。(/etc/apache2/对于内置版本,/opt/local/apache2/conf对于安装的 MacPorts 版本)

苹果

答案2

正如 Ayaz 所建议的,您需要编辑 plist。正确的路径应该是/System/Library/LaunchDaemons/org.apache.httpd.plist

为了确保运行正确的apachectl,请修改PATHshell 启动脚本中的环境变量(例如~/.bash_profile~/.zshrc任何其他脚本),使其/opt/local/apache2/bin位于 之前/usr/sbin。在 bash 中,将 macports apache 目录添加到 前面的语法是:

export PATH=/usr/local/apache2/bin:$PATH

答案3

另一个修复方法是将 apachectl 符号链接到 /usr/sbin/apachectl

$ su -
# mv /usr/sbin/apachectl /usr/sbin/apachectl.mac_version
# ln -s /opt/local/apache2/bin/apachectl /usr/sbin/apachectl

答案4

嗯...您知道可以在“系统偏好设置”->“共享”中激活“个人 Web 共享”。您是否想让该复选框激活您的自定义 Apache 版本而不是捆绑版本?

我不知道这是否可行,但我不建议这样做。更好的办法是停用基本版本并单独使用自定义版本。

您已经完成了第 1 步,即在“系统偏好设置”中关闭默认服务器。要使自定义版本在启动时加载,请调查您提到的 /Library/LaunchDaemons/org.apache.httpd.plist 文件。有关使用这些文件的更多信息,请参阅 $man launchctl,以及这个方便的软件叫 Lingon。

使用这些工具(也许是 $ps -ax|grep httpd),您应该能够确保正在运行的 Apache 版本是自定义的 MacPorts 安装。

哦,这让我想到了其他东西:apachectl 不是服务器,它只是用来控制服务器(即 httpd)的实用程序。也许 MacPorts apachectl 正在启动捆绑的 httpd?或者也许 MacPorts httpd 正在使用捆绑的 PHP...

就我个人而言,我解决这个问题的方法是根据需要升级 PHP 来改变已安装的 apache 版本,但希望您可以使用其中的一些方法来继续进行故障排除。

相关内容