2009-06-02 24 views
9

Nó có sẵn cho trình duyệt,làm thế nào để tạo một tệp PHP chỉ có thể chạy qua chế độ CLI?

nhưng tôi không muốn nó để thực thi khi duyệt bởi người sử dụng,

nói, khi duyệt nên thoát ra,

là Có cách nào để phát hiện cho dù đó là hiện Cmmand Chế độ Line?

+0

Tôi đã tìm thấy câu trả lời, có thể kiểm tra: isset ($ argv) – omg

+0

Có lẽ bạn nên sử dụng php_sapi_name. Đó là cách được chấp nhận để làm những gì bạn muốn. –

+0

@Shore - Bạn thực sự không nên sử dụng $ argv. Nó được điều khiển bởi một thiết lập INI, không phải CGI so với CLI: http://us3.php.net/manual/en/ini.core.php#ini.register-argc-argv –

Trả lời

1

Đây là một thủ thuật:

Bạn có thể kiểm tra $ argc/$ thông số argv mà luôn luôn có sẵn trong chế độ CLI.

#!/usr/bin/php 
<?php 

ini_set('register_argc_argv', 0); 

if (!isset($argc) || is_null($argc)) 
{ 
    echo 'Not CLI mode'; 
} else { 
    echo 'CLI mode'; 
} 

register_argc_argv

$argc

+2

Tại sao fiddle với thiết lập INI khi php_sapi_name() được thiết kế cho chính xác mục đích này? –

+0

Có một vấn đề khác, sử dụng cách này, khi gỡ lỗi trong Zend, nó cũng được coi là "Không chế độ CLI" ngay cả khi nó thực sự – omg

1

lừa khác, $_SERVER có các biến mà chỉ được thiết lập ở chế độ CLI.

2

Dưới đây là những gì tôi đang sử dụng, trong một thời gian dài bây giờ ... (kể từ php 4 iirc)

(PHP_SAPI !== 'cli' || isset($_SERVER['HTTP_USER_AGENT'])) && die('cli only'); 

được sử dụng như dòng đầu tiên của kịch bản php.

Các vấn đề liên quan