Jawaban yang lebih pendek.
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.
Bahkan Anda dapat mengkompilasi dan memuat berbagai versi PHP yang ingin Anda gunakan dengan Apache selama Anda menyesuaikan Apache untuk memuatnya dengan benar. Antarmuka baris perintah PHP tidak akan pernah berperan dalam kasus parsing halaman PHP Apache.
Versi baris perintah PHP hanya ada untuk tugas-tugas khusus baris perintah dan modul PHP untuk Apache tidak akan pernah menyentuh, menggunakan atau membutuhkannya.
Jawaban yang lebih panjang.
Anda mengatakan ini:
Saya ingin tahu php
versi mana yang saya gunakan jadi saya menulis skrip standar:
phpinfo();
Yang memberi saya PHP versi 5.6.10- versi PHP yang benar diperlukan untuk aplikasi saya. Ketika saya mencoba di terminal:
php -i or php -v
Ini menunjukkan kepada saya PHP versi 5.3.2 yang tidak saya butuhkan.
Versi PHP yang tersedia dari baris perintah tidak ada hubungannya dengan versi PHP yang dimuat sebagai modul. Ini adalah hal-hal yang sepenuhnya terpisah.
Jadi jika Anda khawatir tentang versi PHP yang digunakan aplikasi web Anda, jika phpinfo()
menunjukkan versi 5.6.10 dan itulah yang Anda inginkan / butuhkan, itu 100% baik.
Versi baris perintah PHP adalah item sistem yang sepenuhnya terpisah. Jadi satu-satunya hal yang penting adalah hasil dariphpinfo()
.
Jika karena alasan tertentu Anda ingin menggunakan versi PHP yang berbeda dengan Apache, yang perlu Anda lakukan adalah menginstal modul PHP Apache yang dikompilasi di suatu tempat dan menambahkan — atau menyesuaikan — baris ini dalam konfigurasi Apache sistem Anda:
LoadModule php5_module /path/to/php/and/the/module/for/apache2/libphp5.so
Dan sesuaikan saja jalan ke libphp5.so
— yang digunakan Apache untuk mem-parsing PHP — kemudian restart Apache dan Anda berada dalam bisnis.
Sebagai contoh, pada satu titik saya harus mengkompilasi versi PHP 5.1.6 dari sumber (dengan dukungan GD library) untuk digunakan pada mesin Ubuntu 12.04 yang menjalankan PHP 5.3.5. Dalam file server memuat modul PHP di sini:
/etc/apache2/mods-available/php5.load
Saya memiliki garis seperti ini:
# LoadModule php5_module /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module /usr/lib/apache2/modules/libphp516-gd.so
Perhatikan bagaimana satu baris dikomentari libphp535.so
dan yang lainnya untuk libphp516-gd.so
tidak diomortasikan? Apa yang saya lakukan adalah saya mengganti nama libphp5.so
modul Apache PHP 5.3.5 default menjadi libphp535.so
dengan nomor versi dalam nama sehingga saya bisa memilikinya di sana untuk referensi dan kemudian menamai modul PHP 5.1.6 (dengan dukungan perpustakaan GD) libphp516-gd.so
jadi saya tahu apa itu juga. Dengan cara ini saya memiliki keduanya tersedia untuk saya berdampingan pada sistem.
Dan — seperti yang saya katakan di awal — versi PHP yang digunakan dalam baris perintah sama sekali tidak ada hubungannya dengan modul Apache PHP. Jadi Anda dapat memiliki sejumlah versi berbeda dari modul-modul Apache PHP yang siap digunakan; cukup sesuaikan konfigurasi dan mulai ulang Apache dan Anda harus menjalankan bisnis untuk menggunakan versi PHP apa pun yang Anda tentukan untuk digunakan oleh Apache.
Jika Anda mencoba menjalankan kode PHP dari server web Anda, maka versi yang Anda gunakan adalah yang dilaporkan oleh
phpinfo()
= 5.6.10 .Server Anda tampaknya memiliki beberapa versi PHP yang diinstal, dan ketika Anda login dan berjalan
php
pada baris perintah, Anda mendapatkan versi yang lebih lama yang diinstal ke / usr / bin / php.Server dapat memiliki banyak versi PHP, dan versi Anda sepertinya.
Jika Anda perlu secara manual menjalankan PHP yang sama dengan server web Anda, maka Anda perlu menemukan versi lainnya. Coba jalankan perintah ini:
Salah satu dari mereka mungkin mengungkapkan PHP dengan versi yang sama dengan server web Anda, dan ketika Anda mencari tahu mana itu, Anda bisa menggunakannya bukan sebagai default.
sumber
Jika saya dapat menambahkan 2 sen saya ...
Saya meningkatkan versi Nextcloud saya. Ketika saya menjalankan prosedur pemutakhiran, saya harus "sudo php" sebagai pengguna apache, tetapi menolak untuk menjalankan karena versi php CLI dijalankan secara default oleh pengguna apache terlalu tua. Namun, phpinfo (); di server saya ditampilkan versi php terbaru yang diinstal.
Saya menyadari bahwa itu karena variabel PATH di file /home/apache/.bashrc disetel ke versi pertama dari php yang saya instal di server saya , dan itu tidak pernah diperbarui lagi (saya selalu mengkompilasi / menginstal php dari sumber di Github )
Solusinya:
Ketika Anda memperbarui php di server web Anda dan ingin memastikan versi php CLI yang digunakan adalah yang terbaru saat Anda sudo sebagai pengguna apache, jangan lupa untuk mengubahnya di file .bashrc dari pengguna ini, seperti ini:
PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH
sumber
Langkah-langkah untuk memperbaikinya. Pertama-tama versi PHP menunjukkan kepada Anda.
Sekarang Anda akan memerlukan jalur PHP, Jika Anda tidak tahu maka Anda dapat menghubungi dukungan hosting Anda untuk jalur PHP. Dalam kasus saya itu
Sekarang, saatnya menjalankan perintah ini di terminal.
Ini akan mengubah versi PHP Anda menjadi PHP 7.1. Jika Anda ingin mengubahnya menjadi 7.2, Anda dapat mencoba
Kamu selesai. Verifikasi dengan
sumber
Buat path variabel lingkungan untuk versi terbaru php mis: C: \ wamp64 \ bin \ php \ php7.2.4 Sekarang ubah folder versi php Anda sebelumnya .php5.6.35 ke beberapa nomor lain php5.6.354 .. Kemudian periksa php -v wamp Anda server dan cli php akan sama
sumber