【发布时间】:2013-12-29 15:57:21
【问题描述】:
在我的 Mac 上,我已经安装了 php,并且工作正常。我最近想安装 mcrypt,所以我使用了 brew。虽然它似乎安装得很好,但它并没有出现在我的 phpinfo() 中。所以我认为brew安装mcrypt的php不是apache使用的php。
有人知道我该怎么做吗:
- 检查brew安装的php和Apache使用的php是否有区别?
- 让apache使用brew安装的php?
欢迎所有提示!
【问题讨论】:
在我的 Mac 上,我已经安装了 php,并且工作正常。我最近想安装 mcrypt,所以我使用了 brew。虽然它似乎安装得很好,但它并没有出现在我的 phpinfo() 中。所以我认为brew安装mcrypt的php不是apache使用的php。
有人知道我该怎么做吗:
欢迎所有提示!
【问题讨论】:
Homebrew php 公式的贡献者给出了以下说明。此处复制的确切说明安装 php7.4。替换你需要的php版本。
(避免实现目标的“特殊”方法;它们通常会出现问题。“官方”方法更有可能为您提供可预测、可维护的设置。)
$ brew search php // since php can be installed by homebrew but be missing from your PATH, review the list of php versions available through homebrew; a checkmark next to a version indicates one is installed
$ brew install php@7.4
$ echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc // add the alias to your path (issues you are using zsh, the default now for macOS); see comments output during installation
$ source ~/.zshrc // reload . zshrc to use the new settings immediately
公式的贡献者还提供了在 Apache 中启用 PHP 的以下说明:
要在 Apache 中启用 PHP,请将以下内容添加到 httpd.conf 并重新启动 Apache:
LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>`最后,检查 DirectoryIndex 是否包含 index.php
DirectoryIndex index.php index.htmlphp.ini 和 php-fpm.ini 文件位于:
/usr/local/etc/php/7.4/
这些在 Apache 中启用 PHP 的说明会在您安装 php 时出现在 stdout 中。或者在终端使用brew info php 或访问Homebrew PHP formula page
【讨论】:
php@7.2替换为您要安装的任何版本
brew update 不采用包名(如 php)。此外,在文件中直接使用$(brew --prefix) 对我不起作用。我必须手动替换实际路径,所以对我来说,该行是LoadModule php7_module /usr/local/opt/php@7.3/lib/httpd/modules/libphp7.so
$ brew link php
$ source ~/.zshrc(已删除空格)
你必须让你的 Apache 使用你刚刚下载的 PHP。
打开您的httpd.conf(我的是/etc/apache2/httpd.conf)并查找加载PHP模块的行,例如:
LoadModule php5_module path/to/php
然后,让它指向 brew 为您安装并支持 mcrypt 的 PHP。我的在这条路上。您安装的 PHP 版本可能会有所不同。
/usr/local/Cellar/php54/5.4.21/libexec/apache2/libphp5.so
最后,您需要重新启动 Apache 服务器以加载新配置:
sudo apachectl restart
【讨论】:
/usr/local/opt/php/lib/httpd/modules
由于我缺乏经验,无法对 stackoverflow 发表评论,但添加到上述答案是正确的。只需附加注释即可找到正确的路径:
运行:
brew info php54
或者你安装过哪个版本,它会告诉你路径:
To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so
【讨论】:
/usr/local/opt/php55/libexec/apache2/libphp5.so 更好,因为它不会随着更新 PHP 5.5 版本而改变。
brew info php71 时,它不会给我返回与您在这里相同的行。我得到了一堆其他信息,但没有这个文件在哪里。我想知道我是否有不同版本的 brew。
我会为其创建一个别名,这样您就不会干扰系统 PHP 安装。
brew info php71
Brew 安装到 /usr/local/Cellar,因此您可以将以下内容添加到您的 ~/.bash_alias 或 ~/.profile。
alias php7='/usr/local/Cellar/php71/7.1.10_21/bin/php'
【讨论】:
ln -s /usr/local/Cellar/php71/7.1.11_22/bin/php /usr/bin/php
brew install php 目前安装的是 php 7.3,下面的版本是 keg-only
您可以通过将其添加到以下版本来为以下版本创建别名:
~/.profile
alias php@5.6='$(brew --prefix php@5.6)/bin/php'
alias php@7.0='$(brew --prefix php@7.0)/bin/php'
alias php@7.1='$(brew --prefix php@7.1)/bin/php'
alias php@7.2='$(brew --prefix php@7.2)/bin/php'
~/.bashrc
source ~/.profile
~/.zshrc
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
那么你可以:
php@5.6 -v
php@7.0 -v
php@7.1 -v
php@7.2 -v
如果你使用composer并且你的项目中没有设置平台php,那么这会很方便:
~/.profile
alias composer@5.6='php@5.6 $(which composer)'
alias composer@7.0='php@7.0 $(which composer)'
alias composer@7.1='php@7.1 $(which composer)'
alias composer@7.2='php@7.2 $(which composer)'
如果你经常使用 artisan(artisan 映射到 7.3 的 php),那么这会很方便:
~/.profile
alias artisan@5.6='php@5.6 artisan'
alias artisan@7.0='php@7.0 artisan'
alias artisan@7.1='php@7.1 artisan'
alias artisan@7.2='php@7.2 artisan'
【讨论】:
尝试:brew link php71 --force 使用 brew 特定的 php 版本。
它对我有用。
【讨论】:
截至 2021 年,您所需要的只是
brew install php
然后
brew link php
这将为您提供php 8.0 并设置您的符号链接。
【讨论】:
brew upgrade 我的 PHP 消失后,它仍然“安装”,所以我不得不做brew reinstall php,它又开始工作了。