如何使用brew安装的php?

Posted

技术标签:

【中文标题】如何使用brew安装的php?【英文标题】:How to use the php that brew installed? 【发布时间】:2013-12-29 15:57:21 【问题描述】:

在我的 Mac 上,我已经安装了 php,并且工作正常。我最近想安装 mcrypt,所以我使用了 brew。虽然它似乎安装得很好,但它并没有出现在我的 phpinfo() 中。所以我认为brew安装mcrypt的php不是apache使用的php。

有人知道我该怎么做吗:

    检查brew安装的php和Apache使用的php是否有区别? 让apache使用brew安装的php?

欢迎所有提示!

【问题讨论】:

见:Setup Apache, mysql and PHP using Homebrew on macOS Sierra 【参考方案1】:

根据 Homebrew 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.html  

php.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 如果您想以通用方式链接 Homebrew 的 PHP,以便它适用于未来的 PHP 版本,请使用:echo 'export PATH="/usr/local/opt/php/bin:$PATH"' >> ~/.bash_profile Homebrew syslinks 当你运行$ brew link php 请注意最后一行应为$ source ~/.zshrc(已删除空格) 啊!很好的捕捉@JorgeLuisBorges。错字已修复。【参考方案2】:

你必须让你的 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

【讨论】:

太棒了!你救了我的一天!谢谢一百万! 太棒了!谢谢你。我正在将 php7.1 更新为 php7.2 显然链接需要指向特定版本而不是一般的/usr/local/opt/php/lib/httpd/modules【参考方案3】:

由于我缺乏经验,无法对 *** 发表评论,但添加到上述答案是正确的。只需附加注释即可找到正确的路径:

运行:

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

【讨论】:

对于 PHP 5.5,/usr/local/opt/php55/libexec/apache2/libphp5.so 更好,因为它不会随着更新 PHP 5.5 版本而改变。 我真的希望能够以这种方式找到我的 .so 文件,但是当我这样做 brew info php71 时,它不会给我返回与您在这里相同的行。我得到了一堆其他信息,但没有这个文件在哪里。我想知道我是否有不同版本的 brew。 好像和github.com/Homebrew/homebrew-php/issues/3601有关 感谢 AnthonyT - 现场 应该被接受的答案,因为 /usr/local/opt/phpxx/ 是当前版本的 simlink,因此更新安全 - 不像其他版本指向当前版本直接【参考方案4】:

我会为其创建一个别名,这样您就不会干扰系统 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【参考方案5】:

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'

【讨论】:

【参考方案6】:

尝试:brew link php71 --force 使用 brew 特定的 php 版本。 它对我有用。

【讨论】:

【参考方案7】:

截至 2021 年,您所需要的只是

brew install php

然后

brew link php

这将为您提供php 8.0 并设置您的符号链接。

【讨论】:

brew upgrade 我的 PHP 消失后,它仍然“安装”,所以我不得不做brew reinstall php,它又开始工作了。

以上是关于如何使用brew安装的php?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Brew 安装最新版本的 Node

如何使用+剪贴板使用Brew安装Vim?

Mac系统下安装/卸载brew(带踩坑)

解决brew下载php7(不存在libphp7.so)

如何在不使用 brew 的情况下使用终端将 maven 安装到 mac [重复]

mac os x 无法使用home brew 安装php