2010-11-10 38 views
47

Sau khi chỉnh sửa hoàn toàn cấu hình PHP của tôi trên MAC cố gắng để làm cho mô-đun SOAP hoạt động (-bash:/usr/bin/php: Không có tệp hoặc thư mục như vậy ....) bây giờ tôi phải sử dụng MAMP nhưng mỗi lần tôi phải nhập đường dẫnLàm cách nào để ghi đè đường dẫn của PHP để sử dụng đường dẫn MAMP?

Applications/MAMP/bin/php5.3/bin/php to do command line. 

Chỉ cần nhập php thay vì toàn bộ đường dẫn trên MAC? Tôi đôi kiểm tra và tôi không có một file có tên .profile cũng không bash_profile

Cảm ơn

PS: Đây là những gì đầu ra 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 

Trả lời

95

Thực tế là câu trả lời được chấp nhận trước đây đề cập đến php 5.3.6, trong khi phiên bản hiện tại của tàu MAMP với 5.6.2 là mặc định (tính đến 2015-05-01), chỉ ra rằng đây không phải là một giải pháp rất bền vững. Bạn có thể đảm bảo đường dẫn của mình tự động cập nhật bằng cách thêm một dòng bổ sung vào số .bash_profile của bạn để lấy phiên bản PHP mới nhất từ ​​/Applications/MAMP/bin/php/ và xuất nó sang đường dẫn của bạn. Đây là cách tôi làm điều đó:

# Use MAMP version of PHP 
PHP_VERSION=`ls /Applications/MAMP/bin/php/ | sort -n | tail -1` 
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH 

(Sử dụng source ~/.bash_profile sau khi thực hiện những thay đổi của bạn để đảm bảo rằng chúng có hiệu lực.)

Như những người khác đã đề cập, bạn sẽ có khả năng cũng muốn thay đổi vỏ để sử dụng mysql MAMP của thực thi, được đặt tại /Applications/MAMP/Library/bin. Tuy nhiên, tôi không không khuyên bạn nên xuất thư mục đó, bởi vì có một loạt các tệp thi hành khác ở đó, như libtool, có thể bạn không muốn ưu tiên hơn các phiên bản được cài đặt hệ thống của mình. Sự cố này đã ngăn tôi cài đặt gói nút gần đây (libxmljs), như được ghi thành tài liệu here.

giải pháp của tôi là để xác định và xuất khẩu mysqlmysqladmin như các chức năng:

# Export MAMP MySQL executables as functions 
# Makes them usable from within shell scripts (unlike an alias) 
mysql() { 
    /Applications/MAMP/Library/bin/mysql "[email protected]" 
} 
mysqladmin() { 
    /Applications/MAMP/Library/bin/mysqladmin "[email protected]" 
} 
export -f mysql 
export -f mysqladmin 

tôi đã sử dụng chức năng thay vì bí danh, vì bí danh không được truyền cho tiến trình con, hoặc ít nhất là không trong bối cảnh một kịch bản shell. Nhược điểm duy nhất tôi đã tìm thấy là chạy which mysqlwhich mysqladmin sẽ không còn trả lại bất kỳ điều gì, đó là một con số thấp. Nếu bạn muốn kiểm tra xem mysql nào đang được sử dụng và đảm bảo mọi thứ đều là copacetic, hãy sử dụng mysql --version để thay thế.

Lưu ý: @julianromera chỉ ra rằng zsh không hỗ trợ chức năng xuất, do đó, trong trường hợp đó, bạn nên sử dụng bí danh, như alias mysql='/Applications/MAMP/Library/bin/mysql'. Chỉ cần lưu ý rằng các bí danh của bạn có thể không có sẵn từ các subshells (như khi thực thi một kịch bản lệnh shell).

+3

Giải pháp này là thanh lịch, bền vững và hoàn toàn thiên tài. Cảm ơn bạn! –

+0

chức năng xuất không hoạt động trên zsh. Điều gì về việc sử dụng một bí danh? (ví dụ 'alias mysql = '/ Applications/MAMP/Library/bin/mysql'') – r3x

+0

@julianromera Tôi bắt đầu với các bí danh, nhưng theo kinh nghiệm của tôi, các bí danh không được truyền cho các tiến trình con, hoặc ít nhất là không trong ngữ cảnh của một kịch bản lệnh shell. Vì vậy, nếu tôi chạy một tập lệnh shell sử dụng mysql, nó sẽ không tìm thấy bí danh của tôi và thay vào đó sẽ sử dụng phiên bản hệ thống của mysql. Dù sao, cảm ơn cho tip! Tôi sẽ thêm ghi chú về zsh. –

3

Nếu bạn phải gõ

/Applications/MAMP/bin/php5.3/bin/php 

trong dòng lệnh của bạn rồi thêm

/Applications/MAMP/bin/php5.3/bin 

vào PATH của bạn để có thể gọi php từ mọi nơi.

+0

yeap nhưng làm thế nào để thêm nó vào biến PATH xin vui lòng? –

+1

xuất PATH = $ PATH: /Applications/MAMP/bin/php5.3/bin Bạn có thể phải khởi động lại/kết nối lại thiết bị đầu cuối của bạn để nó hoạt động (ít nhất với các cổng khác mở song song). – Kissaki

+0

Cảm ơn, nó hoạt động;) –

122

Trong thư mục chính /Users/David cho exmaple, bạn có thể tạo .bash_profile. Ở đây bạn có thể xuất các biến và sau đó thêm chúng vào đường dẫn của bạn.

Mở tệp để chỉnh sửa tệp trong trình chỉnh sửa yêu thích của bạn, tôi sử dụng vim.

Sau đó, bạn có thể thêm vào đường dẫn của bạn

export MAMP_PHP=/Applications/MAMP/bin/php/php5.3.6/bin 
export PATH="$MAMP_PHP:$PATH" 

Bạn muốn chút của bạn trước các $PATH như đã bao gồm /usr/bin đó là nơi cuộc sống hệ thống PHP. Vì vậy, hệ thống sẽ luôn tìm phiên bản MAMP của bạn trước tiên.

Lưu tệp này và sau đó khởi động lại Thiết bị đầu cuối của bạn và bạn sẽ thấy rằng bạn sẽ nhận được phiên bản MAMP của mình.

Để kiểm tra tôi sử dụng php -v như OSX Lion sử dụng 5.3.10 và MAMP của tôi đang sử dụng 5.3.6
Bạn cũng có thể kiểm tra bằng which php mà sẽ ra con đường để thực thi php hiện tại của bạn.

+0

Làm việc như một sự quyến rũ, cảm ơn rất nhiều – tDo

+0

Làm việc như ma thuật. Tôi đã thử nâng cấp php mặc định đi kèm với mac nhưng không may mắn. cuối cùng bây giờ PATH của php điểm php MAMP của tôi. –

+1

Tôi biết bài đăng này hơi cũ, nhưng có thể nó có thể giúp ai đó. Nếu bạn đang sử dụng MAMP với oh-my-zsh, bạn nên đặt các dòng DavidYell này vào tập tin ~/oh-my-zsh/.zshrc. Bạn sẽ tìm thấy dòng "xuất PATH" (ít nhất là bây giờ trong phiên bản cập nhật hiện tại của tôi) trên dòng 54. Đặt các dòng của DavidYell jst SAU đó. Đối với tôi, làm việc như một say mê. – ppalmeida

12

tôi thấy rằng trên Mavericks 10.8 đã có không phải là một .bash_profile và con đường của tôi đã nằm trong/etc/đường dẫn

Để có con đường mới (cho dù đây là một MAMP hoặc brew cài đặt của php) có hiệu lực nó cần phải ở trên mặc định/usr/bin/php trong tệp đường dẫn này. ví dụ.

/Applications/MAMP/bin/php/php5.3.6/bin 
/usr/bin 

Sau khi thay đổi, mở một cửa sổ terminal mới và chạy 'mà php' mà bây giờ phải trỏ đến con đường cập nhật của bạn

+0

Trên Yosemite tại đây. Trong trường hợp của tôi làm 'php nào trước khi gợi ý của bạn vẫn tạo ra đường dẫn đúng (vì tôi có đường dẫn trong .bash_profile) nhưng phpinfo() không hiển thị mcrypt (hoặc bất kỳ phần mở rộng nào khác trong tệp php.ini của tôi) khi được tải. Làm điều này cố định tuy nhiên, vì vậy cảm ơn! – hamstu

+1

Bạn nên tạo '.bash_profile' của riêng mình trong thư mục chính để thay đổi của bạn chỉ tác động đến bạn. –

7

bạn vẫn có thể chạy vào mysql nhị phân không được tìm thấy theo cách mà

open terminal, type 
touch ~/.bash_profile; open ~/.bash_profile 

chỉnh sửa như sau dưới đây, lưu, khá và khởi động lại thiết bị đầu cuối hoặc xen kẽ

source ~/.bash_profile 

để thực thi PATH mới mà không cần khởi động lại thiết bị đầu cuối

và trong thời trang bài đăng của DavidYell ở trên, cũng thêm như sau. Bạn có thể stack biến khác nhau bằng cách xuất chúng theo sau là một export PATH duy nhất mà tôi đã giải thích bên dưới

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" 

cổ vũ

2

một này làm việc cho tôi:

sudo mv /usr/bin/php /usr/bin/~php 
sudo ln -s /Application/XAMPP/xamppfiles/bin/php /usb/bin/php 
1

Đôi khi, nó dễ dàng hơn để làm điều này:

sudo ln -s /Applications/MAMP/bin/php/php5.6.10/bin/php /usr/bin/php;

Mamps phiên bản của PHP tại thời điểm niêm yết là php5.6.10, do đó hãy chắc chắn rằng bạn thay đổi điều đó với phiên bản bạn đang sử dụng.

Bạn sẽ nhanh chóng đứng dậy.

0

Đây là không một giải pháp lý tưởng như bạn phải quản lý hai tập tin ini tuy nhiên, tôi quản lý để làm việc xung quanh này trên cửa sổ bằng cách sao chép các tập tin php ini trong MAMP từ thư mục conf lên phiên bản php hoạt động của bạn trong thùng rác thư mục.

[MAMP INSTALL]\conf\[ACTIVE PHP VERSION]\php.ini

bản sao cho

[MAMP INSTALL]\bin\php\[ACTIVE PHP VERSION]

1

Đối với người dùng XAMPP bạn có thể sử dụng này:

# Use XAMPP version of PHP 
export PATH=/Applications/XAMPP/xamppfiles/bin:$PATH 
source ~/.bash_profile 

Và bạn có thể kiểm tra xem nó với:

php -v 
0

Để khen câu trả lời được chấp nhận hiện nay, nếu bạn cho rằng MAMP sử dụng phiên bản mới nhất của php5 như là mặc định, bạn có thể thêm grep 'php5' ở giữa:

PHP_VERSION= `ls /Applications/MAMP/bin/php/ | sort -n | grep 'php5' | tail -1` 

và bạn được đảm bảo để có được php5 gần đây nhất bất kể phiên bản MAMP.

+0

Tôi đã hy vọng điều này sẽ làm việc, nhưng tôi chỉ nhận được '-bash: php5.6.10: lệnh không tìm thấy' khi tôi nguồn ~/.bash_profile – dmatamales

+0

Dường như với tôi rằng bash của bạn đang cố gắng thực thi php5.6.10 đó là lạ. Mục đích sử dụng là 'PHP_VERSION = 'ls/Applications/MAMP/bin/php/| sắp xếp -n | grep 'php5' | tail -1'' 'xuất PATH =/Ứng dụng/MAMP/bin/php/$ {PHP_VERSION}/bin: $ PATH' – KalanyuZ

1

Có lẽ quá muộn để bình luận nhưng đây là những gì tôi đã làm khi tôi chạy vào các vấn đề với thiết php PATH để cài đặt XAMPP tôi trên Mac OSX

  1. Mở .bash_profile file (tìm thấy trong thư mục người dùng hiện hành) sử dụng trình soạn thảo văn bản có sẵn.
  2. Thêm đường như sau:

export PATH = /path/to/your/php/cài đặt/bin: nghỉ/nghỉ ngơi/của/thư mục/stuff/hoang sơ/: $ PATH

  1. Lưu .bash_profile và khởi động lại máy Mac của bạn.

Giải thích: Terminal/Mac cố gắng để chạy một tìm kiếm trên PATHS nó biết về, trong một niềm hy vọng của việc tìm kiếm các chương trình, khi người dùng bắt đầu một chương trình từ "Terminal", vì thế mà trick ở đây là để làm cho thiết bị đầu cuối tìm thấy php, người dùng dự định, bằng cách trỏ nó vào phiên bản PHP của người dùng tại một số thư mục bin, được cài đặt bởi người dùng.

Làm việc cho tôi :)

Tái bút: Tôi vẫn là một con chiên lạc mất xung quanh máy tính mới của tôi;)

Các vấn đề liên quan