2011-10-18 39 views
7

câu hỏi của tôi có thể dễ dàng trả lời. tôi muốn thực hiện tập tin php của tôi với các thông số vỏ và vượt qua để nó qua vỏ dụtham số truyền vào php với shell

php test.php parameter1 parameter2 

là có một cách để làm điều đó ngoại trừ sử dụng GET?

cảm ơn

Trả lời

7

Có, bạn có thể làm như vậy nhưng bạn nên tham khảo các đối số từ mảng $_SERVER['argv']. $_SERVER['argc'] sẽ cho bạn biết có bao nhiêu args đã được nhận, nếu bạn muốn sử dụng nó như là một lớp đầu tiên của xác nhận để đảm bảo một số yêu cầu của args được đầu vào.

Để minh họa điều này, chạy kịch bản sau đây là args.php arg1 arg2 arg3:

#!/usr/bin/php 
<?php 
var_dump($argv); 
?> 

chí đầu ra:

array(4) { 
    [0]=> 
    string(8) "args.php" 
    [1]=> 
    string(4) "arg1" 
    [2]=> 
    string(4) "arg2" 
    [3]=> 
    string(4) "arg3" 
} 

Dưới đây là một ví dụ thực tế:

Trong ví dụ này, chúng ta sẽ tạo một tập lệnh (days.php) xuất ra số ngày kể từ một ngày cụ thể. Nó sẽ chấp nhận 3 tham số, tháng, ngày và năm làm số.

#!/usr/bin/php 
<?php 
if($argc < 4 || !is_numeric($argv[1]) || !is_numeric($argv[2]) || !is_numeric($argv[3])) 
{ 
    echo "Usage: $argv[0] mm dd yyyy\n"; 
} 
else 
{ 
    $pastdate = mktime(0, 0, 0, $argv[1], $argv[2], $argv[3]); 
    $diff = time() - $pastdate; 
    $days = round($diff/60/60/24); 
    echo "$days days since $argv[1]/$argv[2]/$argv[3]\n"; 
} 
?> 

Shell gọi:

`$ ./days 11 17 1988` OR `php days.php 11 17 1988` 

Output:

7699 days since 11/17/1988 

Hope this helps.

+1

Liên kết hướng dẫn "Truy cập PHP throuh SHELL" chuyển hướng đến một trang web spam! – Avi

4

Bạn có thể sử dụng $argv để nhận thông số.

+0

Đúng, đó là cách tôi kích hoạt các quy trình php – Atticus

+0

URL của '$ argv' bị hỏng, bạn có thể khắc phục được không? –

+1

@PratikJaiswal Cảm ơn bạn đã thông báo, đã sửa nó. – xdazz

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