Tôi có một tập lệnh phổ biến mà Im bao gồm trong các tệp PHPcron của tôi và các tệp đang truy cập thông qua trình duyệt. Một số phần của mã, tôi chỉ cần cho các tập tin không phải cron. Làm thế nào tôi có thể phát hiện xem thực hiện là từ CLI hoặc thông qua trình duyệt (Tôi biết nó có thể được thực hiện bằng cách đi qua một số đối số với các tập tin cron nhưng tôi không có quyền truy cập vào crontab). Còn cách nào khác không ?Trong PHP, làm thế nào để phát hiện việc thực hiện là từ chế độ CLI hoặc thông qua trình duyệt?
Trả lời
Sử dụng php_sapi_name()
chức năng.
if (php_sapi_name() == "cli") {
// In cli-mode
} else {
// Not in cli-mode
}
Dưới đây là một số lưu ý liên quan từ các tài liệu:
php_sapi_name - Trả về loại của giao diện giữa máy chủ web và PHP
Mặc dù chưa hoàn chỉnh, các giá trị lợi nhuận có thể bao gồm AOLserver , apache, apache2filter, apache2handler, caudium, cgi (cho đến khi PHP 5.3), cgi-fcgi, cli, cli-server, liên tục, nhúng, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen, thttpd, tux và webjames .
Tôi nghĩ bạn có thể thấy nó từ biến $ _SERVER. Hãy thử in ra mảng $ _SERVER cho cả hai trình duyệt & CLI và bạn sẽ thấy sự khác biệt.
này có thể đúng, nhưng có thể không phải là một cách đáng tin cậy để xác định giao diện được sử dụng. Cách thích hợp để kiểm tra là với 'php_sapi_name()'. – DesignerGuy
Có một hằng số PHP_SAPI
có cùng giá trị với php_sapi_name()
.
(có sẵn trong PHP> = 4.2.0)
Đây là cách tốt nhất! – Ankit
Bạn có thể sử dụng:
if (isset($argc))
{
// CLI
}
else
{
// NOT CLI
}
-1 - '$ argc' có thể đã được đặt trong ứng dụng, phải không? Không phải là một phương pháp đáng tin cậy. Chi phí cho tôi nửa ngày làm việc một lần. 'php_sapi_name()' là cách duy nhất tôi biết. –
cũng $ argv/$ argc có thể được lấp đầy bằng các biến GET trên một số cấu hình! –
if(php_sapi_name() == "cli") {
//In cli-mode
} else {
//Not in cli-mode
}
- 1. Làm cách nào để phát hiện IE10 từ JS khi chế độ trình duyệt là IE9?
- 2. làm thế nào để tạo một tệp PHP chỉ có thể chạy qua chế độ CLI?
- 3. Làm thế nào để bạn phát hiện hỗ trợ cho VML hoặc SVG trong trình duyệt
- 4. Làm thế nào là steganography thực hiện trong php
- 5. Thực hiện dòng lệnh thông qua php?
- 6. Làm thế nào để phát hiện mã Python đang được thực hiện thông qua trình gỡ rối?
- 7. Cách phát hiện Chế độ hiển thị của trình duyệt cho trang hiện tại?
- 8. trình duyệt phát hiện
- 9. Thực hiện lệnh git thông qua PHP
- 10. APC PHP trong chế độ CLI
- 11. Làm thế nào để thực hiện việc tải lên thông qua s3 trên Heroku với node.js?
- 12. Thực hiện HTTP PUT từ trình duyệt
- 13. Làm thế nào để phát hiện nếu Vim đang chạy ở chế độ hạn chế?
- 14. Làm cách nào để bạn phát hiện trình duyệt hiện tại trong Bộ điều khiển Api?
- 15. Phát hiện Trình duyệt iPhone
- 16. Phát hiện trình duyệt di động (không chỉ iPhone) ở chế độ xem python
- 17. Phát hiện chế độ tương thích IE10
- 18. PHP imagick phát hiện độ trong suốt
- 19. Phát hiện JavaScript/Thống kê trình duyệt
- 20. PhantomJS không hoạt động trong PHP thông qua trình duyệt (nhưng thực hiện qua dòng lệnh, và thậm chí bằng cách chạy PHP thông qua dòng lệnh)
- 21. Làm thế nào để thực hiện mẫu flyweight trong php?
- 22. Phát hiện xem trình duyệt có ở chế độ toàn màn hình hay không
- 23. Làm thế nào để bỏ qua việc thực hiện hành động từ một ActionFilter?
- 24. Phát hiện chế độ thử nghiệm django
- 25. Phát hiện làm mới trình duyệt trong Javascript
- 26. Phát hiện menu ngữ cảnh trong trình duyệt bằng jquery
- 27. jQuery ngôn ngữ trình duyệt phát hiện
- 28. Làm thế nào để phát hiện Java được cài đặt thông qua REGEDIT.exe từ một tập tin thực thi?
- 29. Rails Phương pháp phát hiện trình duyệt
- 30. Làm cách nào để thực hiện các lệnh từ xa trong PHP qua ssh?
+1 cách duy nhất để thực hiện điều đó. –
PHP_SAPI cũng có thể được sử dụng cho điều này, vì vậy nó không thực sự là cách duy nhất để làm điều này – mishu
Đây từng là một liên kết chỉ trả lời cho đến khi ai đó sao chép câu trả lời của @Linus Unnebäck. Bad habbit! Downvote này, upvote khác ... –