Saya menyadari bahwa ada kesalahan pencocokan antara versi PHP yang dilaporkan oleh phpinfo()
dan php -v
(dalam CLI).
phpinfo(): 5.5.24
php -v: 5.6.9
Saya bekerja pada Mac OS X 10.10 (Yosemite) dan menginstal perpustakaan ( php-version
) untuk mencoba mengelola versi PHP.
Ini melaporkan saya 3 versi berbeda yang diinstal pada laptop saya:
5.4.41
5.5.25
* 5.6.9
Saya ingin mengatur versi PHP yang sama di Apache dan CLI.
Bagaimana saya bisa memberi tahu Apache versi PHP yang digunakan?
Saya mencoba menulis baris ini di httpd.conf
:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
Kemudian:
sudo apachectl restart
Tetapi semua ini tidak menyelesaikan masalah ... Dalam info PHP saya, saya masih memiliki: 5.5.24
apache-http-server
php
Salvatore Dibenedetto
sumber
sumber
Jawaban:
Beberapa masalah berbeda di sini semuanya bersembunyi di bawah konsep kebingungan versi PHP, jadi akan mencoba untuk mengatasi masing-masing sejelas mungkin. Pertama ini:
PHP CLI tidak sama dengan modul PHP Apache.
Seperti yang saya jelaskan dalam jawaban untuk pertanyaan lain di sini , jangan panik! Jika Anda khawatir tentang versi PHP yang digunakan server Apache Anda, output dari
phpinfo()
selalu apa yang harus Anda perhatikan. Modul Apache PHP dan binary baris perintah PHP adalah dua hal berbeda yang tidak saling mengganggu.Perhatikan output dari
phpinfo()
jika Anda khawatir tentang pengaturan versi modul PHP yang benar di Apache.Yang mengatakan, Anda tampaknya masih memiliki masalah mendapatkan modul PHP yang benar dimuat di Apache:
Pastikan server Apache Anda memuat modul PHP yang benar.
Sementara apa yang Anda lakukan secara teknis tampak benar, satu-satunya alasan saya dapat melihat ini tidak bekerja adalah entah bagaimana ada
LoadModule php5_module
arahan lain dalam file konfigurasi Apache yang menggantikan nilai yang Anda tetapkan baris itu.Saya akan merekomendasikan mencari melalui
httpd.conf
- yang saya asumsikan terletak di sini/etc/apache2/httpd.conf
- dan melihat apakah mungkin memang adaLoadModule php5_module
yang Anda lewatkan atau tidak perhatikan ketika mengedit file itu. Melihat file saya yang setara di Mac OS X 10.9.5 Saya melihat baris ini dikomentari — karena saya tidak menggunakan pengaturan Mac / X Apache / PHP — dan membaca sesuatu seperti ini:Tentu saja dalam kasus Anda itu akan dihapus. Rincian lebih lanjut tentang konfigurasi Apache dan PHP untuk pengembangan web dapat ditemukan di situs ini .
Serius mempertimbangkan menggunakan MAMP sebagai alternatif untuk kebiasaan Mac OS X Apache / PHP.
Sekarang semua itu berkata, Saya tidak tahu apa yang Anda coba lakukan, tetapi jika Anda melakukan pengembangan web pada sistem Mac OS X Anda harus serius mempertimbangkan menggunakan MAMP alih-alih meretas tumpukan web inti Mac OS X untuk mendapatkan sesuatu berlari.
Manfaat MAMP adalah tingkat produksi yang sangat setara dengan Mac OS X dari tumpukan LAMP. Dan karena diarahkan untuk pengembangan web di dunia nyata, ia memiliki semua modul dan konfigurasi konfigurasi persis seperti yang seharusnya mereka atur.
Masalah inti dengan Apache dan PHP di Mac OS X adalah perangkat lunak biasanya ketinggalan zaman, rasa sakit untuk mengkonfigurasi / tweak dan mengelola dan sakit kepala untuk debug ketika hal-hal seperti ini terjadi. Dan bagaimana jika pembaruan Mac OS X datang yang menghapus pengaturan Anda dengan hati-hati pengaturan Apache dan PHP? Anda kembali ke titik awal.
sumber
Saya menemukan solusi untuk masalah saya. Setelah mengedit
/etc/apache2/httpd.conf
saya biasa memulai ulang apache menggunakan:Untuk beberapa alasan menggunakan perintah ini Apache tidak akan mengambil pembaruan di
httpd.conf
dan memuat konfigurasi lama.Menggunakan:
Buat semacam restart keras semua layanan dan juga membaca pembaruan dalam file konfigurasi dan akhirnya membaca jalur baru untuk
php5_module
:Terima kasih juga @JakeGould atas penjelasannya .
sumber
-k
bendera dariapachectl
perintah karena jika Anda memeriksaapachectl -h
bahwa bendera / opsi tidak ada di sana. Tidak tahu dari mana Anda mendapatkannya. Juga, ketika Anda menyatakan melakukanstop
danstart
membereskan, yang aneh adalah bahwarestart
pada sistem Linux melakukan hal itu. Jika Anda memeriksa skrip yang terletak di/usr/sbin/apachectl
(itu skrip, jadi gunakan editor teks apa saja untuk melihatnya) sepertinya melakukan hal yang sama. Mungkin pada Mac OS XLaunchDaemons
untuk Apache hanya "aneh" jika dibandingkan dengan Linux standar? Bagaimanapun, bagus Anda memecahkan ini./usr/sbin/apachectl
(tanpa perintah apa pun) dan jelas menyatakan[-k start|restart|graceful|graceful-stop|stop]
,. Saya sudah terbiasa dengan cara Apache bekerja pada sistem Linux sekarang sepertinya saya lupa tentang-k
flag untuk digunakan denganapachectl
perintah. Jadi mengetahui bahwa masalah sebenarnya yang Anda miliki adalah Anda mencoba untuk memulai kembali dengan perintah inisudo apachectl restart
padahal seharusnya-k
bendera ditambahkan seperti inisudo apachectl -k restart
.