2011-07-26 58 views
28

Tôi đang cố gắng để có được apache/php để nhận ra đường dẫn đến git của tôi. Tôi đã nghiên cứu và tìm kiếm ở tất cả các góc của trang web và không thể tìm thấy cách thực hiện việc này. Về cơ bản, không có vấn đề gì tôi cố gắng, khi tôi chạy echo phpinfo(); đường dẫn Apache Environment không thay đổi từ /usr/bin:/bin:/usr/sbin:/sbin. Và khi tôi chạy system('echo $PATH'); trong PHP, nó đọc như nhau.

System Information:

  • Mac OSX (Lion)
  • Apache 2 (chạy như _www)
  • PHP 5.3.6

Dưới đây là những gì tôi đã cố gắng chỉnh sửa cho đến nay:

  • /etc/profile
  • ~/.bash_profile
  • ~/.profile
  • /etc/path
  • /etc/path.d/{NEW_FILE}

Không có gì tôi đã cố gắng để đã thay đổi biến số $PATH. Bất kỳ ý tưởng?

SOLUTION

Vì vậy, đây là giải pháp cuối cùng. Tôi chỉnh sửa các

/System/Library/LaunchDaemons/org.apache.httpd.plist 

và thêm

<key>EnvironmentVariables</key> 
<dict> 
    <key>PATH</key> 
    <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin</string> 
</dict> 
+0

[Các bạn đã thử tắt và bật lại] (http://www.youtube.com/watch?v=nn2FB1P_Mn8)? (Nghiêm túc, mặc dù, có bạn khởi động lại Apache kể từ khi làm điều này?) – cwallenpoole

+1

gợi ý tuyệt vời, nhưng có. –

+1

Tôi gặp sự cố khi chạy PHP '' exec() '' trong đó vỏ Apache có một PATH khác với trình bao Mac của tôi. Điều này giải quyết được vấn đề của tôi. – swt83

Trả lời

30

Bạn có thể thiết lập các biến môi trường PATH trong /System/Library/LaunchDaemons/org.apache.httpd.plist.

Tìm hiểu thêm trong số docs.

+0

Vâng, tôi đã đọc một câu hỏi khác ở đây về điều này. Tôi đã thử điều này. Và nó không hoạt động. Tôi có lỗi apache với điều này. –

+0

Tôi vừa thử lại và nó đã hoạt động. Không chắc chắn lý do tại sao nó không trước đây. Nhưng điều này có vẻ là giải pháp. –

+2

TBH, tôi không biết nếu nó hoạt động giống nhau trên OS X, nhưng trên "nixes" bình thường, lệnh khởi động lại tiến trình apache không khởi chạy lại quá trình, do đó nó không nhận được môi trường cập nhật (nó làm gì làm là nó đọc lại (các) tệp conf của nó). Có lẽ một cái gì đó tương tự là chơi ở đây. – Monolo

4

Bạn có cập nhật biến môi trường PATH của người dùng '_www' không? Apache sẽ đọc các biến môi trường từ người dùng tự chạy. Hoặc, có vẻ như bạn không khởi động lại apache sau khi cập nhật biến môi trường PATH.

Và nếu bạn muốn thay đổi biến môi trường trong PHP, getenv() và putenv() có thể là một lựa chọn tốt hơn.

+0

Đã thử điều đó. Không làm việc. –

+1

'putenv()' chỉ là một giải pháp tốt nếu bạn sửa đổi mã PHP của bạn trực tiếp. Nó không phải là một giải pháp lâu dài tốt nếu bạn phải thêm rằng để MỌI php script/ứng dụng bạn viết. –

+2

cách chỉnh sửa biến PATH cho người dùng _www không tồn tại trong/người dùng? –

0

cho máy chủ ubuntu, trong/etc/apache2/envvars, cho centos server, trong/etc/sysconfig/httpd, thêm:

export PATH=<your php cli path> 

và khởi động lại apache

0

Một vấn đề tương tự với những gì tôi đã cài đặt Derby. Cách tôi giải quyết nó là bằng cách mở TextEdit. Chọn Tệp> Mở tại thời điểm này, nhấn Shift + Command +. , điều này sẽ cho phép bạn xem tất cả các tài liệu. Đi đến thư mục người dùng và tìm kiếm tệp có tên ".profile". Mở nó và thêm BIẾN xuất khẩu = dòng Value ví dụ:

xuất khẩu DERBY_HOME =/opt/local/share/java/derby/

Lưu tài liệu và khởi động lại thiết bị đầu cuối của bạn để xem nếu những thay đổi đi vào ảnh hưởng .

0

Tôi tạo ra ý chính này đã giúp tôi ra từ các thông tin trên:

https://gist.github.com/srayhunter/5208619

Vấn đề của tôi đã được rằng PHP đã không tìm thấy một chương trình mà chúng tôi đã được cài đặt dưới/usr/local/bin. Một khi chúng tôi đã làm ở trên tất cả làm việc và chơi tốt đẹp trên mac osx.

lưu ý
+0

Gist đã biến mất .. :( – Tieme

3

quan trọng cho El Capitan (Xin lỗi cho câu trả lời mới - Tôi không có đủ Rep bình luận)

Ngày OSX 10.11, thư mục/System/Library thư mục được bảo vệ, vì vậy các tập tin không thể được đã chỉnh sửa.

Bạn cần phải:

  • Khởi động lại máy vào chế độ Recovery (giữ CMD + r sau khi âm thanh khởi động)
  • Khi trong chế độ phục hồi, đi đến Utilities> Terminal
  • Run: csrutil disable
  • Khởi động lại vào OSX - bây giờ bạn có thể thay đổi các tệp
  • Sau khi hoàn tất, quay lại chế độ khôi phục và chạy csrutil enable

Hy vọng rằng sẽ giúp

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