Làm cách nào để chỉ định cài đặt Apache nào tôi muốn máy Mac của mình sử dụng?


1

Tất cả các vấn đề của tôi bắt nguồn từ việc cố gắng cài đặt mcrypt cho PHP. Đêm qua tôi đã đưa ra và làm theo hướng dẫn về cách thực hiện cài đặt apache2 và php5.3.3 hoàn toàn mới. Tôi đã làm điều này bằng cách sử dụng macports

Đáng buồn thay, điều đó đã không kích hoạt mcrypt cho tôi đêm qua, mặc dù tôi khá hài lòng vì tôi đã chạy 5.3.3 :)

Vấn đề là tôi đã thức dậy sáng nay và thấy rằng phiên bản php của tôi đã quay trở lại bản 5.3.1, điều đó chỉ có nghĩa là OS X đã trở lại Apache và PHP ban đầu của tôi.

Làm cách nào để tôi báo cho OS X sử dụng phần mềm tôi đã cài đặt qua macports?

(Và sau đó tôi sẽ hỏi một câu hỏi mới về cách kích hoạt mcrypt)

nb Tôi có thể tải cài đặt macports bằng cách dừng chia sẻ web hiện tại trong hệ thống prefs sau đó trong thiết bị đầu cuối

 sudo /opt/local/apache2/bin/apachectl -k restart

Trước tiên, bạn cần tìm hiểu "sử dụng" nghĩa là gì.
Ignacio Vazquez-Abrams

Hiện tại tôi có apache ở 2 nơi. / usr / sbin / apachectl và / opt / local / apache2 / bin / apachectl. Mac os x đang sử dụng cái thứ nhất, tôi muốn nó sử dụng cái thứ hai.
ed209

Không phải là người dùng mac nhưng trên linux bạn sẽ có một cái nhìn xung quanh /etc/init.d. Ở đâu đó có lẽ là một dòng bắt đầu / cuộc gọi /usr/sbin/apachectl. Nhận xét rằng ra và thay thế nó bằng lời kêu gọi apache2.
Nifle

Máy Mac không có /etc/init.d
Doug Harris

Câu trả lời:


5

Không quá nhiều phiên bản Apache / PHP của bạn đã được hoàn nguyên - đó chỉ là phiên bản sai được tải.

Nếu bạn đã bật Chia sẻ web của Mac OS X, nó sẽ tự động kích hoạt phiên bản Apache và PHP do Apple cung cấp bằng LaunchDaemon org.apache.httpd.plisttrong /System/Library/LaunchDaemons(điều này sẽ ghi đè lên phiên bản MacPorts). Bạn sẽ muốn tắt tính năng này bằng cách tắt Chia sẻ web trong Ngăn chia sẻ tùy chọn hoặc bằng cách chạy sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist.

Khi bạn cài đặt Apache cho MacPorts, nó đã cài đặt LaunchDaemon /Library/LaunchDaemons, nếu được bật sẽ tự động khởi động phiên bản MacPorts của Apache. Để cho phép nó chạy sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plistvà bạn đang chạy đến các cuộc đua.

Nếu bạn đang chạy apachectlđể khởi động lại - hãy đảm bảo bạn đã chọn đúng phiên bản. Bạn có thể cần phải thay đổi $ PATH của mình để có /opt/local/apache2/bintrước/usr/sbin

Đối với phiên bản PHP nào đang được sử dụng; trên dòng lệnh, điều này sẽ phụ thuộc vào $ PATH của bạn trong khi đối với Apache, nó hoàn toàn nằm trong cấu hình của bạn nơi mô-đun libphp5 nằm ở đâu. ( /etc/apache2/đối với phiên bản tích hợp, /opt/local/apache2/confdành cho phiên bản MacPorts đã cài đặt)

Táo


2

Như Ayaz đề xuất, bạn cần chỉnh sửa số nhiều. Con đường thích hợp nên là /System/Library/LaunchDaemons/org.apache.httpd.plist.

Để chắc chắn rằng bạn chạy đúng apachectl, sửa đổi các PATHbiến môi trường trong kịch bản khởi động shell của bạn (ví dụ ~/.bash_profile, ~/.zshrchoặc bất cứ điều gì) để /opt/local/apache2/binđi trước /usr/sbin. Trong bash cú pháp để thêm vào thư mục apache macports là:

export PATH=/usr/local/apache2/bin:$PATH

macports đã xóa tệp này (org.apache.httpd.plist) Tôi tin rằng
ed209

@ ed209 Macports không xóa / System / L Library / LaunchDaemons / org.apache.httpd.plist
Kristen Waite

1

Một cách khắc phục khác là symlink apachectl tới / usr / sbin / apachectl

$ su -
# mv /usr/sbin/apachectl /usr/sbin/apachectl.mac_version
# ln -s /opt/local/apache2/bin/apachectl /usr/sbin/apachectl

0

Để khắc phục sự cố Apache của bạn, bạn có thể xem /Library/LaunchDaemons/org.apache.httpd.plistvà chỉnh sửa nó để nếm thử.


Tôi không có tập tin đó! Tuy nhiên tôi có org.macports.apache2.plist
ed209

Apple được lưu trữ tại /System/Library/LaunchDaemons, /Library/LaunchDaemonscó phiên bản MacPorts.
Chealion

0

Hmm ... Bạn biết về Chia sẻ web cá nhân mà bạn có thể kích hoạt trong Tùy chọn hệ thống -> Chia sẻ. Bạn có đang cố gắng làm cho hộp kiểm đó kích hoạt bản dựng Apache tùy chỉnh của bạn thay vì gói được đóng gói không?

Tôi không biết nếu điều này là có thể, nhưng tôi sẽ không đề xuất nó. Đó là một ý tưởng tốt hơn để chỉ kích hoạt lại bản dựng cơ bản và sử dụng riêng bản tùy chỉnh của bạn.

Bạn đã có bước 1, đó là tắt máy chủ mặc định trong Tùy chọn hệ thống. Để khiến bản dựng tùy chỉnh tải khi khởi động, hãy điều tra tệp /L Library / LaDademons / org.apache.httpd.plist mà bạn đã đề cập. Xem $ man launchctl để biết thêm thông tin về cách làm việc với các tệp này và cả phần mềm tiện dụng này có tên là Lingon.

Với các công cụ đó (và có thể là $ ps -ax | grep httpd), bạn sẽ có thể đảm bảo rằng bản dựng Apache đang chạy là bản cài đặt MacPorts tùy chỉnh.

Ôi, điều đó khiến tôi nghĩ đến một thứ khác: apachectl không phải là máy chủ, nó chỉ là một tiện ích bạn sử dụng để kiểm soát máy chủ, đó là httpd. Có lẽ apachectl MacPorts đang bắt đầu httpd đi kèm? Hoặc có lẽ httpd MacPorts đang sử dụng PHP ...

Cá nhân, cách tiếp cận của tôi với điều này sẽ chỉ là thay đổi bản dựng apache đã cài đặt bằng cách nâng cấp PHP theo yêu cầu, nhưng hy vọng bạn có thể sử dụng một số cách này để tiếp tục khắc phục sự cố.


Cuối cùng, tôi đã tắt apache / php đã vận chuyển và bắt đầu phiên bản macports khi tôi cần.
ed209
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.