จะตรวจสอบว่ามีการใช้ PHP ตัวใดอยู่


10

จะตรวจสอบว่ามีการใช้ PHP ตัวใดอยู่

ตัวอย่างเช่นหากมี/usr/local/bin/phpและusr/local/bin/php5ฉันจะรู้ได้อย่างไรว่าสคริปต์ PHP ของฉันถูกใช้งานอันใด

คำตอบ:


11

หากคุณใช้ PHP CLI ให้ลองใช้คำสั่งเชลล์ theese (ฉันสมมติว่าคุณใช้ linux ที่นี่)

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

หากคุณกำลังใช้ PHP เป็นโมดูล Apache แล้ว phpinfo () จะบอกคุณ php รุ่นที่ใช้และ php ไฟล์ config ที่ไม่ใช่เส้นทางของ หากคุณมีไฟล์ php ที่สามารถเรียกใช้งานได้ 2 เวอร์ชั่นนี่จะช่วยคุณได้ หากพวกเขาเป็นรุ่นเดียวกันมันก็ไม่สำคัญว่าใครจะเป็นใคร :)

หากคุณต้องการทราบรุ่นของ php ดังนั้น php -v จะพิมพ์เวอร์ชันของ php ใน CLI และโมดูล Zend ที่ติดตั้งไว้

หากคุณต้องการค้นหาไฟล์ ini ที่รวมอยู่ php --ini จะแสดงรายการไฟล์ ini ที่โหลดโดยโมดูล php (ซึ่งใช้กับเวอร์ชัน CLI)


ขอบคุณสำหรับอินพุตทั้งหมด เห็นได้ชัดว่าwhichคำสั่งคือสิ่งที่ฉันต้องการ
Randell

@ Randell - อย่าใช้which; ใช้command -vแทน ดูที่ตรวจสอบว่ามีโปรแกรมอยู่จากสคริปต์ Bashหรือไม่

7

เพียงเพิ่มสคริปต์ง่ายๆ

<?php phpinfo(); ?>

สิ่งนี้จะไม่เรียกใช้phpจากการเข้าสู่ระบบของผู้ใช้หรือ และไม่จำเป็นต้องเป็น php ที่ใช้โดย Apache?

5

สมมติว่าคุณกำลังใช้งานผ่านเว็บเซิร์ฟเวอร์:
คุณสามารถใส่ฟังก์ชั่นต่อไปนี้ในสคริปต์:

<?php 
phpinfo(); 
?>

หากวิธีนี้ใช้ไม่ได้อาจเป็นเพราะฟังก์ชั่นนี้ถูกปิดใช้งานใน php.ini สิ่งนี้มักจะทำเพื่อความปลอดภัย หากเป็นกรณีนี้คุณจะมีบรรทัดใน php.ini ของคุณเช่น:

disable_functions = phpinfo

หากเป็นกรณีนี้ให้เปลี่ยนเป็นการชั่วคราว

disable_functions =

หากคุณใช้ php สำหรับ Shell Scripts:

  1. ควรมี 'เส้นแนว' ที่ด้านบนสุดคล้าย

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

  2. คุณแน่ใจหรือว่าไม่มีลิงก์ smybolic ลิงก์อื่น ทำ

    ls -l / usr / local / bin / php

  3. อย่า ;-)


5

นอกจากนี้จาก commandline:

$ php -v

PHP 5.2.6-3ubuntu4 กับ Suhosin-Patch 0.9.6.2 (cli) (สร้าง: มี.ค. 31 2009 02:11:31) ลิขสิทธิ์ (c) 1997-2008 The PHP Group Zend Engine v2.2.0, ลิขสิทธิ์ (c) 1998- เทคโนโลยี Zend ปี 2008


สิ่งนี้จะไม่เรียกใช้phpจากการเข้าสู่ระบบของผู้ใช้หรือ และไม่จำเป็นต้องเป็น php ที่ใช้โดย Apache?


0

หากคุณกำลังพูดถึงเว็บสคริปต์ของคุณที่ Apache webserver เรียกใช้และ PHP ถูกกำหนดค่าเป็นโมดูล Apache คำตอบคือไม่มี

สถานที่ที่คุณพูดถึงในคำถามของคุณคือล่ามสคริปต์บรรทัดคำสั่งที่จะมีการเรียกโดยสัญกรณ์ Shebang เช่น

 #!/usr/local/bin/php

ที่ด้านบนสุดของสคริปต์บรรทัดคำสั่ง php ของคุณ

คุณสามารถโทรหาล่ามที่คุณพูดถึงแยกกันเนื่องจากมีชื่อต่างกัน

# php

จะเรียก / usr / local / bin / php และ

# php5

จะเรียก / usr / local / bin / php5

ไม่ใช้อย่างใดอย่างหนึ่งหากคุณใช้ PHP ผ่านโมดูล Apache ถ้าคุณใช้ CGI-Version ของ php มันควรจะแสดงใน phpinfo (); เอาท์พุต



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

สิ่งนี้ใช้ได้แม้ว่าคุณจะไม่สามารถเข้าถึงเชลล์ได้ ;-)


ฉันไม่คิดว่าจะทำสิ่งที่คนขอกำลังมองหา สิ่งนี้จะบอกคุณว่าสภาพแวดล้อมเชลล์จะจบลงด้วยการใช้ในการค้นหา PATH ไม่จำเป็นต้องเป็น PHP เดียวกับสคริปต์ที่เรียกใช้งาน
Theuni
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.