Làm cách nào để chạy mã PHP trong thiết bị đầu cuối?
Một ví dụ lặp lại. php nối thêm một tệp mới vào tệp echodate. txt, tạo tệp nếu nó chưa tồn tại Show Để chạy một đoạn mã php nhỏ trên dòng Terminal php -r '$date=date("Y-m-d H:i:s"); echo $date;' Để hướng đầu ra từ mã php sang tệp khác php -r 'phpinfo();' > phpinfo.txt Tìm kiếm trong Codexpedia
Tìm kiếm tuỳ chỉnh Tìm kiếm toàn bộ trang web
Tìm kiếm tuỳ chỉnh bài viết liên quan
Cả hai cách (dù có sử dụng công tắc -f hay không) đều thực thi tệp my_script. php. Lưu ý rằng không có hạn chế nào về tệp nào có thể được thực thi; Truyền mã PHP để thực thi trực tiếp trên dòng lệnh $ php -r 'print_r(get_defined_constants());' Phải đặc biệt quan tâm đến việc thay thế biến shell và sử dụng dấu ngoặc kép
Cung cấp mã PHP để thực thi thông qua đầu vào tiêu chuẩn ( Điều này mang lại khả năng mạnh mẽ để tạo mã PHP một cách linh hoạt và đưa nó vào tệp nhị phân, như được hiển thị trong ví dụ (hư cấu) này $ some_application | some_filter | php | sort -u > final_output.txt Như với mọi ứng dụng shell, mã nhị phân PHP chấp nhận một số đối số; . Số lượng đối số có thể được truyền vào tập lệnh của bạn không bị giới hạn bởi PHP (và mặc dù trình bao có giới hạn về số lượng ký tự có thể được truyền, nhưng điều này nói chung không có khả năng bị tấn công). Các đối số được chuyển đến tập lệnh có sẵn trong mảng toàn cầu $argv. Chỉ mục đầu tiên (không) luôn chứa tên của tập lệnh được gọi từ dòng lệnh. Lưu ý rằng, nếu mã được thực thi nội tuyến bằng cách sử dụng công tắc dòng lệnh -r, thì giá trị của $argv[0] sẽ là $ php -r 'print_r(get_defined_constants());'0 Biến toàn cục thứ hai, $argc, chứa số lượng phần tử trong mảng $argv (không phải số lượng đối số được truyền cho tập lệnh) Miễn là các đối số được chuyển đến tập lệnh không bắt đầu bằng ký tự $ php -r 'print_r(get_defined_constants());'1, thì không có gì đặc biệt cần chú ý. Việc truyền một đối số cho tập lệnh bắt đầu bằng $ php -r 'print_r(get_defined_constants());'1 sẽ gây rắc rối vì trình thông dịch PHP cho rằng nó phải tự xử lý nó, ngay cả trước khi thực thi tập lệnh. Để ngăn chặn điều này, hãy sử dụng dấu tách danh sách đối số $ php -r 'print_r(get_defined_constants());'3. Sau khi dấu tách này đã được phân tích cú pháp bằng PHP, mọi đối số sau đây sẽ được chuyển nguyên vẹn vào tập lệnh # This will not execute the given code but will show the PHP usage $ php -r 'var_dump($argv);' -h Usage: php [options] [-f] [args...] [...] # This will pass the '-h' argument to the script and prevent PHP from showing its usage $ php -r 'var_dump($argv);' -- -h array(2) { [0]=> string(1) "-" [1]=> string(2) "-h" } Tuy nhiên, trên các hệ thống Unix, có một cách khác để sử dụng PHP cho shell scripting. làm cho dòng đầu tiên của tập lệnh bắt đầu bằng $ php -r 'print_r(get_defined_constants());'4 (hoặc bất kỳ đường dẫn nào đến tệp nhị phân PHP CLI của bạn nếu khác). Phần còn lại của tệp phải chứa mã PHP bình thường trong các thẻ bắt đầu và kết thúc PHP thông thường. Khi các thuộc tính thực thi của tệp được đặt phù hợp (e. g. chmod +x test), tập lệnh có thể được thực thi giống như bất kỳ tập lệnh shell hoặc perl nào khác Ví dụ #1 Thực thi tập lệnh PHP dưới dạng tập lệnh shell $ php -r 'print_r(get_defined_constants());'5 Giả sử tệp này có tên là test trong thư mục hiện tại, bây giờ có thể thực hiện như sau $ chmod +x test $ ./test -h -- foo array(4) { [0]=> string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" } Như có thể thấy, trong trường hợp này không cần quan tâm đặc biệt khi truyền các tham số bắt đầu bằng $ php -r 'print_r(get_defined_constants());'1 Tệp thực thi PHP có thể được sử dụng để chạy các tập lệnh PHP hoàn toàn độc lập với máy chủ web. Trên các hệ thống Unix, dòng đầu tiên $ php -r 'print_r(get_defined_constants());'7 (hoặc "shebang") đặc biệt phải được thêm vào tập lệnh PHP để hệ thống có thể tự động cho biết chương trình nào sẽ chạy tập lệnh. Trên nền tảng Windows, có thể liên kết php. exe bằng tùy chọn nhấp đúp của tiện ích mở rộng .php hoặc có thể tạo tệp bó để chạy tập lệnh thông qua PHP. Dòng đầu tiên Shebang đặc biệt dành cho Unix không gây hại trên Windows (vì nó được định dạng dưới dạng nhận xét PHP), vì vậy có thể viết các chương trình đa nền tảng bằng cách đưa nó vào. Một ví dụ đơn giản về viết chương trình PHP dòng lệnh được hiển thị bên dướiVí dụ #2 Tập lệnh dự định chạy từ dòng lệnh (tập lệnh. php) $ php -r 'print_r(get_defined_constants());'9 $ some_application | some_filter | php | sort -u > final_output.txt0 $ some_application | some_filter | php | sort -u > final_output.txt1 $ some_application | some_filter | php | sort -u > final_output.txt2 $ some_application | some_filter | php | sort -u > final_output.txt3 $ some_application | some_filter | php | sort -u > final_output.txt4 Tập lệnh ở trên bao gồm dòng đầu tiên của Unix shebang để chỉ ra rằng tệp này sẽ được chạy bởi PHP. Chúng tôi đang làm việc với phiên bản CLI tại đây, vì vậy sẽ không có tiêu đề HTTP nào được xuất ra Trước tiên, chương trình kiểm tra xem có một đối số được yêu cầu không (ngoài tên tập lệnh, cũng được tính). Nếu không, hoặc nếu đối số là --help, -help, -h hoặc -?, thông báo trợ giúp sẽ được in ra, sử dụng $argv[0] để tự động in tên tập lệnh như đã nhập trên dòng lệnh. Mặt khác, đối số được lặp lại chính xác như đã nhận Để chạy tập lệnh trên trên Unix, tập lệnh phải được thực thi và được gọi đơn giản là tập lệnh. php echothis hoặc script. php -h. Trên Windows, một tệp bó tương tự như sau có thể được tạo cho tác vụ này Ví dụ #3 Batch file để chạy một dòng lệnh PHP script (script. con dơi) @echo OFF "C:\php\php.exe" script.php %* Giả sử chương trình trên có tên là script. php và CLI php. exe nằm trong C. \php\php. exe, tệp lô này sẽ chạy nó, chuyển qua tất cả các tùy chọn được nối thêm. script. bat echothis hoặc script. bồn tắm Xem thêm tài liệu mở rộng Readline để biết thêm các chức năng có thể được sử dụng để nâng cao các ứng dụng dòng lệnh trong PHP Trên Windows, PHP có thể được cấu hình để chạy mà không cần cung cấp C. \php\php. exe hoặc phần mở rộng
|