[英]How to override the path of PHP to use the MAMP path?
在 MAC 上完全搞砸了我的 PHP 配置后,試圖讓 SOAP 模塊正常工作(-bash: /usr/bin/php: No such file or directory ....)我現在必須使用 MAMP 但每次我必須輸入路徑
Applications/MAMP/bin/php5.3/bin/php to do command line.
如何只輸入 php 而不是 MAC 上的整個路徑? 我仔細檢查過,我沒有名為.profile
的文件,也沒有bash_profile
謝謝
PS:這是輸出 echo $PATH :
echo $PATH
/Applications/MAMP/Library/bin/:/Applications/MAMP/bin/php5/bin/:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin
例如,在您的主文件夾/Users/David
中,您可以創建一個.bash_profile
。 在這里,您可以導出變量,然后將它們添加到您的路徑中。
打開文件在你最喜歡的編輯器中編輯它,我使用 vim。
然后你可以在你的路徑中添加
export MAMP_PHP=/Applications/MAMP/bin/php/php5.3.6/bin
export PATH="$MAMP_PHP:$PATH"
您希望在$PATH
之前您的位,因為它已經包含/usr/bin
這是系統 PHP 所在的位置。 所以系統總是會先找到你的 MAMP 版本。
保存這個文件,然后重啟你的終端,你會看到你應該得到你的 MAMP 版本。
為了測試我使用php -v
因為 OSX Lion 使用 5.3.10 而我的 MAMP 使用 5.3.6
您還可以測試使用which php
將輸出當前 php 可執行文件的路徑。
先前接受的答案指的是 php 5.3.6,而當前版本的 MAMP 以 7.2.1 作為默認版本(截至 2018 年初),這一事實指出這不是一個非常可持續的解決方案。 您可以通過向.bash_profile
或.zshrc
添加額外的行來自動更新路徑,以從/Applications/MAMP/bin/php/
獲取最新版本的 PHP 並將其導出到您的路徑。 這是我的方法:
# Use MAMP version of PHP
PHP_VERSION=`command ls /Applications/MAMP/bin/php/ | sort -n | tail -1`
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH
(在進行更改后使用source ~/.bash_profile
以確保它們生效。)
正如其他人所提到的,您可能還想修改您的 shell 以使用 MAMP 的 mysql 可執行文件,它位於/Applications/MAMP/Library/bin
。 但是,我不建議導出該文件夾,因為那里還有一堆其他可執行文件,例如libtool
,您可能不希望優先考慮系統安裝的版本。 此問題阻止我最近安裝節點包 (libxmljs),如此處所述。
我的解決方案是將mysql
和mysqladmin
定義和導出為函數:
# Export MAMP MySQL executables as functions
# Makes them usable from within shell scripts (unlike an alias)
mysql() {
/Applications/MAMP/Library/bin/mysql "$@"
}
mysqladmin() {
/Applications/MAMP/Library/bin/mysqladmin "$@"
}
export -f mysql
export -f mysqladmin
我使用函數而不是別名,因為別名不會傳遞給子進程,或者至少不會在 shell 腳本的上下文中傳遞。 我發現的唯一缺點是運行which mysql
和which mysqladmin
將不再返回任何內容,這是一個無賴。 如果您想檢查正在使用哪個 mysql 並確保所有內容都正確,請改用mysql --version
。
注意:@julianromera 指出 zsh 不支持導出函數,因此在這種情況下,您最好使用別名,例如alias mysql='/Applications/MAMP/Library/bin/mysql'
。 請注意,您的別名可能無法從子 shell 中使用(例如在執行 shell 腳本時)。
每次保存 MAMP 配置(PHP 部分)時,它都會在~/.profile
文件中保存 PHP 的當前版本,並為 php、pear 和 pecl 創建別名,以指向當前配置的版本。 (注意:您需要在 MAMP 中選中“使此版本在命令行上可用”選項)
但是,您需要刷新終端(打開另一個會話)才能刷新此文件。 您還可以鍵入source ~/.profile
手動刷新別名。
如果您想在 PHP_VERSION 變量中提取此當前版本 - 如上所述 - 以供進一步使用,您可以執行以下操作:
export PHP_VERSION=`grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-`
然后您將有 $PHP_VERSION 可用於當前版本的 MAMP。
最后,如果你想在 mamp 上使用當前配置的版本運行你的 php ,你只需要在你的~/.bash_profile
添加以下內容:
export PHP_VERSION=`grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-`
export PHPRC="/Library/Application Support/appsolute/MAMP PRO/conf/" #point to your php.ini folder to use the same php settings
export PATH=/Applications/MAMP/bin/php/php$PHP_VERSION/bin:$PATH
現在,即使是依賴/usr/bin/env php
腳本也會從 Mamp 配置中讀取正確的版本。
我發現在 Mavericks 10.8 上沒有 .bash_profile 並且我的路徑位於 /etc/paths
為了使新路徑(無論這是 php 的 mamp 安裝還是 brew 安裝)生效,它需要高於此路徑文件中的默認 /usr/bin/php。 例如。
/Applications/MAMP/bin/php/php5.3.6/bin
/usr/bin
更改后,打開一個新的終端窗口並運行現在應該指向更新路徑的“which php”
您可能仍然會遇到無法以這種方式找到的 mysql 二進制文件
open terminal, type
touch ~/.bash_profile; open ~/.bash_profile
如下編輯,保存,關閉並重新啟動終端或交替
source ~/.bash_profile
在不重啟終端的情況下執行新的 PATH
並按照上面 DavidYell 的帖子的方式,還添加以下內容。 您可以通過導出各種變量來堆疊各種變量,然后是我在下面演示的單個 PATH 導出
export MAMP_PHP=/Applications/MAMP/bin/php/php5.6.2/bin
export MAMP_BINS=/Applications/MAMP/Library/bin
export USERBINS=~/bins
export PATH="$USERBINS:$MAMP_PHP:$MAMP_BINS:$PATH"
干杯
如果你必須輸入
/Applications/MAMP/bin/php5.3/bin/php
在您的命令行中然后添加
/Applications/MAMP/bin/php5.3/bin
到您的 PATH 以便能夠從任何地方調用 php。
這個對我有用:
sudo mv /usr/bin/php /usr/bin/~php
sudo ln -s /Application/XAMPP/xamppfiles/bin/php /usb/bin/php
對於 XAMPP 用戶,您可以使用它:
# Use XAMPP version of PHP
export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH
source ~/.bash_profile
你可以檢查它:
php -v
有時,這樣做更容易:
sudo ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /usr/bin/php;
發布時 PHP 的 Mamps 版本是php5.6.10
,因此請確保將其更改為您正在使用的版本。
你很快就會起來。
評論可能太晚了,但這是我在 Mac OSX 上為 XAMPP 安裝設置 php PATH 遇到問題時所做的
導出路徑= /path/to/your/php/installation/bin : leave/rest/of/the/stuff/untouched/ :$PATH
說明:終端/ Mac上嘗試運行在它知道的路徑搜索,找到程序,當用戶開始從“終端”程序,因此這里的技巧是讓終端找到PHP的希望,用戶打算通過將其指向用戶安裝的某個 bin 文件夾中的用戶版本的 PHP。
為我工作:)
PS 我在我的新電腦周圍仍然是一只迷路的羊;)
最新版本的 MAMP(版本 5+)提供了一種使 MAMP PHP 版本可用於命令行的簡單方法。 只需在側欄菜單中選擇“PHP”並選中“在命令行上提供此版本”。 十分簡單! 見附件截圖:)
這不是一個理想的解決方案,因為您必須管理兩個 ini 文件,但是,我設法通過將 mamp 中的 php ini 文件從 conf 文件夾復制到 bin 文件夾中的活動 php 版本來解決此問題。
[MAMP INSTALL]\\conf\\[ACTIVE PHP VERSION]\\php.ini
復制到
[MAMP INSTALL]\\bin\\php\\[ACTIVE PHP VERSION]
為了補充當前接受的答案,如果您假設 MAMP 使用最新版本的 php5 作為默認值,則可以在中間添加 grep 'php5':
PHP_VERSION= `ls /Applications/MAMP/bin/php/ | sort -n | grep 'php5' | tail -1`
無論 MAMP 版本如何,您都可以保證獲得最新的 php5。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.