Hướng dẫn can you use php to write command line scripts? - bạn có thể sử dụng php để viết script dòng lệnh không?

16 tháng 9 tại PSU DOT EDU ¶

10 năm trước

You can easily parse command line arguments into the $_GET variable by using the parse_str() function.

parse_str

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

Ẩn danh ¶

1 năm trước

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal:

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.

Apmuthu tại USA DOT NET

4 năm trước

Adding a pause() function to PHP waiting for any user input returning it:

0

Drewish tại Kindahouse dot com ¶

17 năm trước

2

3

4

Franknospamwanted tại. Toppoint Dot. de ¶

8 năm trước

6

7

8

9

Lucas Dot Vasconcelos tại Gmail Dot Com ¶

15 năm trước

parse_str1

parse_str2

parse_str3

Monte at ispi dot net ¶

19 năm trước

parse_str5

parse_str6

OHCC tại 163 dot com ¶

6 năm trước

parse_str8

parse_str9

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

0

notrealllyanaddress tại Somerandomaddr dot com ¶

12 năm trước

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

2

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

3

Sam Marshall ¶

3 năm trước

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

5

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

6

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

7

(implode('&', array_slice($argv, 1)), $_GET);?>

It behaves exactly like you'd expect with cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3

This will set $_GET['a'] to '1' and $_GET['b'] to array('2', '3').

Even better, instead of putting that line in every file, take advantage of PHP's auto_prepend_file directive.  Put that line in its own file and set the auto_prepend_file directive in your cli-specific php.ini like so:

auto_prepend_file = "/etc/php/cli-php5.3/local.prepend.php"

It will be automatically prepended to any PHP file run from the command line.

8

Psikyo tại mail dot dlut dot edu dot cn ¶

9 năm trước

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
0

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
1

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
2

ben tại slax0rnet dot com

18 năm trước

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
4

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
5

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
6

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
7

We can pass many arguments directly into the hashbang line.
As example many ini setting via the -d parameter of php.
---
#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
phpinfo();
exit;
---
./script | grep memory
memory_limit => 2048M => 2048M
---
But we can also use this behaviour into a second script, so it call the first as an interpreter, via the hashbang:
---
#!./script arg1 arg2 arg3
---
However the parameters are dispatched in a different way into $argv
8

Kodeart ¶

11 năm trước

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.0

Overflow636 tại Gmail Dot Com ¶

17 năm trước

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.1

Franknospamwanted tại. Toppoint Dot. de ¶

8 năm trước

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.2

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.3

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.4

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.5

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.6

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.7

Ẩn danh ¶

12 năm trước

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.8

Sam Marshall ¶

15 năm trước

All the parameters are in $argv[1], $argv[0] is the interpreter script name, and $argv[1] is the caller script name.9

Monte at ispi dot net ¶

17 năm trước

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 0

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 1

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 2

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 3

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 4

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 5

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 6

Franknospamwanted tại. Toppoint Dot. de ¶

8 năm trước

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 8

To get back the parameters into $argv, we can simply test if $argv[1] contains spaces, and then dispatch again as normal: 9

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
0

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
1

Lucas Dot Vasconcelos tại Gmail Dot Com ¶

8 năm trước

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
3

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
4

Lucas Dot Vasconcelos tại Gmail Dot Com ¶

15 năm trước

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
6

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
7

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
8

Monte at ispi dot net ¶

15 năm trước

#!/usr/bin/php -d memory_limit=2048M -d post_max_size=0
var_dump($argv);
if (
strpos($argv[1], ' ') !== false){
 
$argw = explode(" ", $argv[1]);
 
array_unshift($argw, $argv[2]);
 
$argv = $argw;
}
var_dump($argv); ?>
---
array(3) {
  [0]=>
  string(8) "./script"
  [1]=>
  string(15) "arg1 arg2 arg3 "
  [2]=>
  string(14) "./other_script"
}
array(4) {
  [0]=>
  string(8) "./other_script"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}
---
This will maintain the same behaviour in all cases and allow to even double click a script to call both parameters of another script, and even make a full interpreter language layer.  The other script doesn't has to be php. Take care of paths.
9

0

1

2

Monte at ispi dot net ¶

15 năm trước

4

5

6

7

Monte at ispi dot net ¶

19 năm trước

8

9

Adding a pause() function to PHP waiting for any user input returning it:0

Adding a pause() function to PHP waiting for any user input returning it:1

OHCC tại 163 dot com ¶

15 năm trước

Adding a pause() function to PHP waiting for any user input returning it:3

Adding a pause() function to PHP waiting for any user input returning it:4

Adding a pause() function to PHP waiting for any user input returning it:5

Adding a pause() function to PHP waiting for any user input returning it:6

Monte at ispi dot net ¶

18 năm trước

Adding a pause() function to PHP waiting for any user input returning it:8

Adding a pause() function to PHP waiting for any user input returning it:9

Kodeart ¶

17 năm trước

01

02

03

04

05

06

07

08

09

10

11

Franknospamwanted tại. Toppoint Dot. de ¶

8 năm trước

13

Lucas Dot Vasconcelos tại Gmail Dot Com ¶

19 năm trước

14

15

16

17

18

OHCC tại 163 dot com ¶

6 năm trước

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

notrealllyanaddress tại Somerandomaddr dot com ¶

19 năm trước

37

38

39

40

OHCC tại 163 dot com ¶

17 năm trước

42

43

44

45

46

47

48

Franknospamwanted tại. Toppoint Dot. de ¶

15 năm trước

50

51

Monte at ispi dot net ¶

15 năm trước

53

PHP có thể được sử dụng cho các tập lệnh dòng lệnh không?

Tính đến phiên bản 4.3.0, PHP hỗ trợ loại SAPI mới (Giao diện lập trình ứng dụng máy chủ) có tên CLI có nghĩa là giao diện dòng lệnh.Đúng như tên gọi, trọng tâm chính của loại SAPI này là phát triển các ứng dụng Shell (hoặc máy tính để bàn) với PHP.PHP supports a new SAPI type (Server Application Programming Interface) named CLI which means Command Line Interface. As the name implies, this SAPI type main focus is on developing shell (or desktop as well) applications with PHP.

Bạn có thể viết tập lệnh trong PHP không?

Kịch bản dòng lệnh.Bạn có thể tạo một tập lệnh PHP để chạy nó mà không cần bất kỳ máy chủ hoặc trình duyệt nào.Bạn chỉ cần trình phân tích cú pháp PHP để sử dụng nó theo cách này.Loại sử dụng này là lý tưởng cho các tập lệnh thường xuyên được thực hiện bằng cron (trên *Nix hoặc Linux) hoặc Trình lập lịch tác vụ (trên Windows).You can make a PHP script to run it without any server or browser. You only need the PHP parser to use it this way. This type of usage is ideal for scripts regularly executed using cron (on *nix or Linux) or Task Scheduler (on Windows).

CLI PHP là gì?

Giao diện dòng lệnh của PHP (CLI) cho phép bạn thực thi các tập lệnh PHP khi đăng nhập vào máy chủ của bạn thông qua SSH.ServerPilot cài đặt nhiều phiên bản PHP trên máy chủ của bạn để có nhiều tệp thực thi PHP có sẵn để chạy.allows you to execute PHP scripts when logged in to your server through SSH. ServerPilot installs multiple versions of PHP on your server so there are multiple PHP executables available to run.

Làm thế nào để bạn sử dụng các lệnh PHP?

bởi Vincy.Đã sửa đổi lần cuối vào ngày 9 tháng 7 năm 2022. Sử dụng PHP thông qua dòng lệnh là có thể và chúng ta sẽ xem cách thực hiện nó trong hướng dẫn này.... lệnh cli sapi ..