phpinfo () dan php -v menunjukkan versi PHP yang berbeda

18

Saya ingin tahu phpversi mana yang saya gunakan jadi saya menulis skrip standar:

phpinfo();

Yang memberi saya

PHP version 5.6.10

Versi PHP yang benar diperlukan untuk aplikasi saya. Ketika saya mencoba di terminal:

php -i

atau

php -v

Ini menunjukkan kepada saya:

PHP version 5.3.2

Yang tidak saya butuhkan. Kemudian saya mencoba dengan:

which php

Ini menunjukkan kepada saya:

/usr/bin/php

Sekarang saya bingung versi PHP mana yang saya gunakan. File diunggah ke situs web hosting dan saya tidak dapat membuat perubahan apa pun pada file konfigurasi seperti httpd.confatau php.ini.

Gabf Hann
sumber

Jawaban:

22

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 phpversi 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.sodan yang lainnya untuk libphp516-gd.sotidak diomortasikan? Apa yang saya lakukan adalah saya mengganti nama libphp5.somodul Apache PHP 5.3.5 default menjadi libphp535.sodengan 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.sojadi 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.

JakeGould
sumber
23

Jika Anda memiliki masalah ini saat memutakhirkan dari PHP5 ke PHP7 di Ubuntu 14.04 dengan Apache, inilah yang membantu saya (kredit diberikan di sini ):

Nonaktifkan modul PHP5 di Apache:

sudo a2dismod php5

Sekarang aktifkan PHP7:

sudo a2enmod php7.1

Untuk mencerminkan perubahan, diperlukan restart Apache:

sudo systemctl restart apache2
Jan Żankowski
sumber
ini dapat menghentikan proyek jika php.ini berbeda
KawaiKx
2

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 phppada 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:

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

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.

Ross Perkins
sumber
0

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

JeffCourteau
sumber
-1

Langkah-langkah untuk memperbaikinya. Pertama-tama versi PHP menunjukkan kepada Anda.

php -v

Sekarang Anda akan memerlukan jalur PHP, Jika Anda tidak tahu maka Anda dapat menghubungi dukungan hosting Anda untuk jalur PHP. Dalam kasus saya itu

/opt/php71/bin/php

Sekarang, saatnya menjalankan perintah ini di terminal.

alias php='/opt/php71/bin/php'

Ini akan mengubah versi PHP Anda menjadi PHP 7.1. Jika Anda ingin mengubahnya menjadi 7.2, Anda dapat mencoba

alias php='/opt/php72/bin/php'

Kamu selesai. Verifikasi dengan

php -v
Akram Chauhan
sumber
-3

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

sudheep kr
sumber