บทความนี้จะอธิบายวิธีการใช้งาน PHP จาก Bash shell/บรรทัดคำสั่งอย่างรวดเร็ว พร้อมตัวอย่าง
โดยปกติแล้ว PHP จะใช้สำหรับสร้างเนื้อหาเพื่อให้บริการบนเว็บ แต่ก็สามารถใช้จากบรรทัดคำสั่งได้เช่นกัน
โดยปกติแล้วจะทำเพื่อวัตถุประสงค์ในการทดสอบหรือค้นหาข้อมูลเกี่ยวกับสภาพแวดล้อม PHP แต่ PHP ยังสามารถใช้สำหรับการเขียนสคริปต์บรรทัดคำสั่ง (ซึ่งไม่ได้ทำบ่อยนักจริงๆ อาจเป็นเพราะมีดีกว่า ทางเลือกอื่น )
ดำเนินการคำสั่ง PHP โดยตรงจากเชลล์
คำสั่ง PHP สามารถดำเนินการได้โดยตรงจากบรรทัดคำสั่งด้วย -r (เรียกใช้) ตัวเลือก:
php -r 'phpinfo();'
ด้านบน phpinfo() เรียกว่าฟังก์ชัน สามารถส่งโค้ดหลายบรรทัดโดยคั่นด้วยเครื่องหมายอัฒภาค หรือส่งไพพ์ heredoc (ตัวแปร multiline Bash) ได้
พารามิเตอร์/อาร์กิวเมนต์
พารามิเตอร์/อาร์กิวเมนต์สามารถส่งผ่านไปยัง PHP ได้โดยใช้ $argv ตัวแปร ซึ่งสามารถใช้ได้เมื่อดำเนินการ PHP จากบรรทัดคำสั่ง
php -r 'echo $argv[1]; echo $argv[2];' "foo" "bar"
ด้านบน พารามิเตอร์แรกเข้าถึงได้โดยใช้ $argv[1] และพารามิเตอร์ที่สองโดยใช้ $argv[2] .
$argv เป็นอาร์เรย์ที่จะสามารถเข้าถึงได้เฉพาะเมื่อมีการเรียก PHP จากบรรทัดคำสั่ง รายการแรกในอาร์เรย์จะเป็นชื่อของโปรแกรมเรียกทำงาน PHP ที่เรียกใช้เพื่อเรียกใช้สคริปต์ และรายการต่อไปนี้ในอาร์เรย์จะเป็นพารามิเตอร์ที่ส่งผ่านตามลำดับลักษณะที่ปรากฏ
เรียกใช้ไฟล์สคริปต์
ไฟล์ PHP สามารถดำเนินการได้จากบรรทัดคำสั่งโดยระบุพาธไปยังไฟล์:
php script.php
หรือ
php -f script.php
ที่ -f ไม่จำเป็นแต่สามารถระบุได้เพื่อความชัดเจน
รายการตัวเลือกบรรทัดคำสั่ง PHP ทั้งหมดสามารถพบได้ที่นี่
พารามิเตอร์/อาร์กิวเมนต์
เมื่อเรียกใช้ PHP โดยตรงจากบรรทัดคำสั่ง พารามิเตอร์สามารถเข้าถึงได้โดยใช้ $argv array เมื่อเรียกใช้สคริปต์จากบรรทัดคำสั่งในลักษณะเดียวกัน
ตรวจสอบว่าเรียกใช้จากบรรทัดคำสั่งหรือไม่
ชอบ $argv , $argc จะปรากฏเมื่อเรียกใช้จากบรรทัดคำสั่งเท่านั้น ประกอบด้วยจำนวนของพารามิเตอร์/อาร์กิวเมนต์ที่ส่งผ่านไปยังสคริปต์
หากมี แสดงว่าคุณกำลังเรียกใช้บนบรรทัดคำสั่ง!
if (isset($argc)) { // PHP was called from the command line }
STDIN/STDOUT และ PHP
สามารถใช้การเปลี่ยนเส้นทางมาตรฐานเพื่อป้อนคำสั่งและประมวลผลข้อมูลจาก PHP ได้เช่นเดียวกับที่คุณทำกับแอปพลิเคชันบรรทัดคำสั่งอื่นๆ
echo 'Green trees' | php -r 'echo file_get_contents("php://stdin");'
ด้านบน ข้อความ "ต้นไม้สีเขียว" ถูกส่งไปยัง PHP ซึ่งจะอ่านไฟล์ของ STDIN และทำซ้ำอีกครั้ง