Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Chạy script PHP từ dòng lệnh: Hướng dẫn nhanh Bash

Bài viết này sẽ nhanh chóng đi qua các cách PHP có thể dùng từ shell Bash/dòng lệnh, kèm ví dụ.

PHP thường dùng để tạo nội dung phục vụ trên web – nhưng cũng có thể dùng từ dòng lệnh.

Thường làm này để test hoặc tìm thông tin về môi trường PHP – nhưng PHP cũng có thể viết script dòng lệnh (dù không phổ biến – có lẽ vì có lựa chọn tốt hơn).

Thực thi lệnh PHP trực tiếp từ Shell

Lệnh PHP có thể chạy trực tiếp từ dòng lệnh với tùy chọn -r (run):

php -r 'phpinfo();'

Trên đây, hàm phpinfo() được gọi. Nhiều dòng code có thể truyền cách nhau bởi dấu chấm phẩy, hoặc heredoc (biến đa dòng Bash) có thể pipe vào.

Tham số/Đối số

Tham số có thể truyền cho PHP dùng biến $argv, có sẵn khi PHP chạy từ dòng lệnh.

php -r 'echo $argv[1]; echo $argv[2];' "foo" "bar"

Trên đây, tham số đầu tiên truy cập bằng $argv[1] và thứ hai bằng $argv[2].

$argv là mảng chỉ truy cập được nếu PHP được gọi từ dòng lệnh. Phần tử đầu tiên trong mảng là tên file thực thi PHP được gọi để chạy script, và các phần tử tiếp theo là tham số truyền vào theo thứ tự xuất hiện.

Thực thi file script

File PHP có thể chạy từ dòng lệnh bằng cách cung cấp đường dẫn đến file:

php script.php

hoặc

php -f script.php

Tùy chọn -f không bắt buộc nhưng có thể chỉ định cho rõ ràng.

Danh sách đầy đủ các tùy chọn dòng lệnh PHP có thể tìm thấy ở đây.

Tham số/Đối số

Giống như khi thực thi PHP trực tiếp từ dòng lệnh, tham số có thể truy cập dùng mảng $argv khi chạy script từ dòng lệnh theo cách tương tự.

Kiểm tra xem có chạy từ dòng lệnh không

Giống $argv, $argc chỉ có mặt khi chạy từ dòng lệnh. Nó chứa số lượng tham số/đối số truyền cho script.

Nếu nó có mặt, bạn đang chạy trên dòng lệnh!

if (isset($argc)) {
  // PHP được gọi từ dòng lệnh
}

STDIN/STDOUT và PHP

Chuyển hướng tiêu chuẩn có thể dùng để cung cấp lệnh cho và xử lý dữ liệu từ PHP như bất kỳ ứng dụng dòng lệnh nào khác.

echo 'Green trees' | php -r 'echo file_get_contents("php://stdin");'

Trên đây, văn bản 'Green trees' được pipe đến PHP, sau đó đọc file của STDIN và lặp lại nó.