Tôi muốn thực thi một câu lệnh php như if(function_exists("my_func")) echo 'function exists';
trực tiếp với dòng lệnh mà không phải sử dụng tệp php riêng biệt.
Làm thế nào là nó có thể ?
Tôi muốn thực thi một câu lệnh php như if(function_exists("my_func")) echo 'function exists';
trực tiếp với dòng lệnh mà không phải sử dụng tệp php riêng biệt.
Làm thế nào là nó có thể ?
Câu trả lời:
Nếu bạn định làm PHP trong dòng lệnh, tôi khuyên bạn nên cài đặt phpsh, một trình bao PHP tốt . Nó vui hơn nhiều.
Dù sao, lệnh php cung cấp hai công tắc để thực thi mã từ dòng lệnh :
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Bạn có thể sử dụng chuyển đổi -r của php như vậy:
php -r 'echo function_exists("foo") ? "yes" : "no";'
Lệnh PHP ở trên sẽ xuất ra no
và trả về 0
như bạn có thể thấy:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
Một chuyển đổi vui nhộn khác là php -a :
-a Run as interactive shell
Đó là một sự khập khiễng so với phpsh , nhưng nếu bạn không muốn cài đặt trình vỏ tương tác tuyệt vời cho php được tạo bởi facebook để hoàn thành tab, lịch sử, v.v. , thì hãy sử dụng -a như vậy :
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
Nếu nó không hoạt động trên hộp của bạn như trên hộp của tôi * es * ( đã thử nghiệm trên Ubuntu và Arch), thì có lẽ thiết lập PHP của bạn bị mờ hoặc bị hỏng . Nếu bạn chạy lệnh này:
php -i | grep 'API'
Bạn sẽ thấy:
Server API => Command Line Interface
Nếu bạn không , điều này có nghĩa là có thể một lệnh khác sẽ cung cấp CLI SAPI . Hãy thử php-cli, có thể đó là một gói hoặc một lệnh có sẵn trong HĐH của bạn.
Nếu bạn thấy rằng lệnh php của bạn sử dụng CLI (Giao diện dòng lệnh) SAPI (API máy chủ), thì hãy chạy php -h | grep code
để tìm ra công tắc điên nào - vì điều này đã không thay đổi trong năm - cho phép chạy mã trong phiên bản / thiết lập của bạn.
Một vài ví dụ khác, chỉ để đảm bảo nó hoạt động trên các hộp của tôi:
>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes
Ngoài ra, lưu ý rằng có thể một tiện ích mở rộng được tải trong CLI chứ không phải trong CGI hoặc Apache SAPI. Có khả năng một số SAP SAPI sử dụng các tệp php.ini khác nhau , ví dụ /etc/php/cli/php.ini
vs /etc/php/cgi/php.ini
vs /etc/php/apache/php.ini
trên hộp Gentoo. Tìm hiểu tập tin ini được sử dụng với php -i | grep ini
.
Trên dòng lệnh:
php -i | grep sourceguardian
Nếu nó ở đó, thì bạn sẽ nhận được một số văn bản. Nếu không, bạn sẽ không nhận được một điều.
.php
tệp? "?
Bạn có thể dùng :
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
Thẻ ngắn " <? = " Cũng có thể hữu ích:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
Thẻ đóng Tha "?>" Là tùy chọn, nhưng đừng quên cuối cùng ";" !
php -r
bạn không cần phải lo lắng về việc mở các thẻ PHP.
sử dụng " thay vì ' trên windows khi sử dụng phiên bản cli với -r
php -r "echo 1"
-- chính xác
php -r 'echo 1'
- không chính xác
PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1