บทความนี้จะวิ่งผ่านวิธีการใช้ PHP จาก Bash shell/บรรทัดคำสั่ง พร้อมตัวอย่าง
PHP ปกติใช้สำหรับสร้างเนื้อหาเพื่อเสิร์ฟบนเว็บ – แต่ก็สามารถใช้จากบรรทัดคำสั่งได้เช่นกัน
สิ่งนี้มักทำเพื่อวัตถุประสงค์ในการทดสอบหรือค้นหาข้อมูลเกี่ยวกับสภาพแวดล้อม PHP – แต่ PHP ยังสามารถใช้เขียนสคริปต์บรรทัดคำสั่งได้ (แม้ว่าจะไม่ค่อยทำบ่อยนัก – อาจเพราะมีทางเลือกที่ดีกว่า)
รันคำสั่ง PHP โดยตรงจาก Shell
คำสั่ง PHP สามารถรันโดยตรงจากบรรทัดคำสั่งด้วยตัวเลือก -r (run):
php -r 'phpinfo();'
ข้างต้น เรียกฟังก์ชัน phpinfo() สามารถส่งโค้ดหลายบรรทัดคั่นด้วยเครื่องหมายเซมิโคลอน หรือส่ง heredoc (ตัวแปรหลายบรรทัดของ 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 เมื่อรันสคริปต์จากบรรทัดคำสั่งในลักษณะเดียวกัน
ตรวจสอบว่ากำลังรันจากบรรทัดคำสั่งหรือไม่
เหมือนกับ $argv, $argc มีอยู่ก็ต่อเมื่อรันจากบรรทัดคำสั่ง มันเก็บจำนวนพารามิเตอร์/อาร์กิวเมนต์ที่ส่งให้สคริปต์
หากมันมีอยู่ แสดงว่าคุณกำลังรันบนบรรทัดคำสั่ง!
if (isset($argc)) { // PHP ถูกเรียกจากบรรทัดคำสั่ง }
STDIN/STDOUT และ PHP
การเปลี่ยนทิศทางมาตรฐานสามารถใช้ส่งคำสั่งไปและประมวลผลข้อมูลจาก PHP ได้เหมือนกับแอปพลิเคชันบรรทัดคำสั่งอื่นๆ
echo 'Green trees' | php -r 'echo file_get_contents("php://stdin");'
ข้างต้น ข้อความ 'Green trees' ถูกส่งไปยัง PHP ซึ่งอ่านไฟล์ของ STDIN และทำซ้ำกลับมา