Bagaimana cara menentukan PHP mana yang sedang digunakan?

10

Bagaimana cara menentukan PHP mana yang sedang digunakan?

Misalnya, jika ada /usr/local/bin/phpdan usr/local/bin/php5, bagaimana saya tahu yang mana yang digunakan oleh skrip PHP saya?

Randell
sumber

Jawaban:

11

Jika Anda menggunakan PHP CLI, maka coba gunakan perintah shell ini (saya berasumsi bahwa Anda menggunakan linux di sini)

which php - will locate the php executable (this should be the default php used by you)
whereis php - The first path displayed will be the location of the php executable
echo $PATH - will print a list of paths separated by ":" where the system looks for commands

Jika Anda menggunakan PHP sebagai modul Apache maka phpinfo () akan memberi tahu Anda versi php yang digunakan, dan file konfigurasi php, BUKAN jalur php . Jika Anda memiliki 2 versi php yang dapat dieksekusi maka ini akan membantu Anda. Jika mereka adalah versi yang sama maka tidak masalah yang mana :)

Jika Anda ingin mengetahui versi php, maka php -v akan mencetak versi php di CLI dan setiap modul Zend yang diinstal.

Jika Anda ingin mengetahui file ini termasuk maka php --ini akan menampilkan daftar file ini dimuat oleh modul php (ini berlaku untuk versi CLI).

quamis
sumber
Terima kasih atas semua masukan. Rupanya, whichperintah itulah yang saya butuhkan.
Randell
@ Randell - Jangan gunakan which; gunakan command -vsaja. Lihat juga Periksa apakah ada program dari skrip Bash .
7

Cukup tambahkan skrip sederhana

<?php phpinfo(); ?>
Chathuranga Chandrasekara
sumber
Tidakkah ini akan menjalankan phpdari login pengguna; dan belum tentu php yang digunakan oleh Apache?
5

Dengan asumsi Anda Menggunakan melalui Web Server:
Anda dapat menempatkan fungsi berikut dalam skrip:

<?php 
phpinfo(); 
?>

Jika ini tidak berhasil, bisa jadi karena fungsi ini dinonaktifkan di php.ini. Ini sering dilakukan untuk keamanan. Jika demikian, Anda akan memiliki baris di php.ini seperti:

disable_functions = phpinfo

Jika ini masalahnya, ubah sementara untuk

disable_functions =

Jika Anda Menggunakan php untuk Shell Script:

  1. Seharusnya ada 'garis shebang' di atas, semacamnya

    #! / usr / local / bin / php -q

  2. Apakah Anda yakin yang satu tautan smybolic ke yang lain? melakukan

    ls -l / usr / local / bin / php

  3. Jangan ;-)

Kyle Brandt
sumber
5

Juga dari baris perintah:

$ php -v

PHP 5.2.6-3ubuntu4 dengan Suhosin-Patch 0.9.6.2 (cli) (dibangun: 31 Maret 2009 02:11:31) Hak Cipta (c) 1997-2008 Grup PHP Zend Engine v2.2.0, Hak Cipta (c) 1998- 2008 Zend Technologies

Koperasi
sumber
Tidakkah ini akan menjalankan phpdari login pengguna; dan belum tentu php yang digunakan oleh Apache?
1
<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>
rkthkr
sumber
0

Jika Anda berbicara tentang skrip web Anda yang dipanggil oleh server web Apache Anda dan PHP dikonfigurasi sebagai modul Apache maka jawabannya adalah TIDAK ADA.

Lokasi yang Anda sebutkan dalam pertanyaan Anda adalah penerjemah skrip baris perintah yang akan dipanggil dengan notasi shebang

 #!/usr/local/bin/php

di bagian atas skrip baris perintah-php Anda

Anda dapat memanggil juru bahasa yang Anda sebutkan secara terpisah, karena mereka memiliki nama yang berbeda

# php

akan memanggil / usr / local / bin / php dan

# php5

akan memanggil / usr / local / bin / php5

Tidak satu pun dari mereka yang digunakan jika Anda menggunakan PHP melalui modul Apache. Jika Anda menggunakan CGI-Version dari php, ia akan muncul di phpinfo (); keluaran.


sumber
0
<?php phpinfo(); ?>
Rory
sumber
0
<?php echo shell_exec('which php'); ?>

Ini berfungsi bahkan jika Anda tidak memiliki akses shell. ;-)

yitwail
sumber
Saya tidak berpikir ini melakukan apa yang dicari orang yang dicari. Ini hanya memberi tahu Anda apa yang akan digunakan oleh lingkungan shell pada pencarian PATH. PHP tidak harus sama dengan PHP yang dieksekusi dengan skrip.
Theuni