Hướng dẫn execute php file with parameters - thực thi tệp php với các tham số

36

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi cần thực hiện một tệp PHP với các tham số thông qua shell.

Đây là cách tôi sẽ chạy tệp PHP:

PHP -Q htdocs/file.php

Tôi cần phải có tham số 'Hiển thị' được truyền qua và

PHP -Q htdocs/file.php? show = show_name

không hoạt động

Nếu ai đó có thể đánh vần cho tôi lệnh thực thi nào để thực hiện tệp PHP để thực thi với các tham số đã đặt, thì nó sẽ được đánh giá cao. Nếu không, hãy cố gắng dẫn tôi đúng hướng.

Hướng dẫn execute php file with parameters - thực thi tệp php với các tham số

Tshepang

11.7K21 Huy hiệu vàng90 Huy hiệu bạc134 Huy hiệu đồng21 gold badges90 silver badges134 bronze badges

Đã hỏi ngày 20 tháng 7 năm 2011 lúc 15:01Jul 20, 2011 at 15:01

Patrick Loriopatrick LorioPatrick Lorio

5.49011 Huy hiệu vàng44 Huy hiệu bạc72 Huy hiệu đồng11 gold badges44 silver badges72 bronze badges

1

test.php:

<?php
print_r($argv);
?>

Shell:

$ php -q test.php foo bar
Array
(
    [0] => test.php
    [1] => foo
    [2] => bar
)

Hướng dẫn execute php file with parameters - thực thi tệp php với các tham số

Neil

13.9k3 Huy hiệu vàng27 Huy hiệu bạc 50 Huy hiệu Đồng3 gold badges27 silver badges50 bronze badges

Đã trả lời ngày 20 tháng 7 năm 2011 lúc 15:07Jul 20, 2011 at 15:07

1

Nếu bạn có máy chủ web (không chỉ cài đặt trình thông dịch PHP mà còn là đèn/lnmp/vv) - chỉ cần thử điều này

wget -O - -q -t 1 "http://mysite.com/file.php?show=show_name" >/dev/null 2>&1

where:

  • «-O -» - (Thư "O", không phải Zero!)
  • «>/Dev/null 2> & 1» - Chuyển hướng đầu ra Stdout & Stderr chuyển hướng đến hư không
  • «-Q» -Wget Run yên tĩnhwget run
  • «-T 1» -Chỉ cần 1 cố gắng kết nối (không giống như mặc định 20)1 try to connect (not like default 20)

Trong "Exec" của PHP, nó sẽ giống như thế này:

function exec_local_url($url) {
  exec('/usr/bin/wget -O - -q -t 1 "http://'. $_SERVER['HTTP_HOST'] .'/'
    . addslashes($url) . '" >/dev/null 2>&1'
  );
}

// ...

exec_local_url("file.php?show=show_name");
exec_local_url("myframework/seo-readable/show/show_name");

Vì vậy, bạn không cần phải thay đổi tập lệnh của mình để xử lý Argc/argv và có thể sử dụng $ _get như thường lệ.

Nếu bạn muốn các công việc chạy trong nền - xem cho người yêu cũ. UNIX/Windows, Quy trình nền thiết lập? từ mã PHP

Tôi sử dụng cách tiếp cận với wget trong công việc cron của tôi; hy vọng nó giúp.

Đã trả lời ngày 18 tháng 4 năm 2013 lúc 9:47Apr 18, 2013 at 9:47

FlamestormflamestormFlameStorm

91416 Huy hiệu bạc20 Huy hiệu Đồng16 silver badges20 bronze badges

2

Bạn cần đọc các tham số dòng lệnh từ $ argc và $ argv.

Sử dụng một dấu hỏi là một cái gì đó bạn làm trong URL và không liên quan gì đến việc thực hiện PHP từ một dòng lệnh.

Xem thêm: http://www.sitepoint.com/php-command-line-1/

Đã trả lời ngày 20 tháng 7 năm 2011 lúc 15:04Jul 20, 2011 at 15:04

Hướng dẫn execute php file with parameters - thực thi tệp php với các tham số

BradbradBrad

155K48 Huy hiệu vàng341 Huy hiệu bạc512 Huy hiệu Đồng48 gold badges341 silver badges512 bronze badges

Ngoài các câu trả lời khác (khá chính xác), bạn cũng có thể chuyển các đối số dưới dạng các tham số môi trường, như thế này:

FOO=42 BAR=quux php test.php

Sau đó, chúng sẽ có sẵn trong Superglobal $_ENV.

Đã trả lời ngày 20 tháng 7 năm 2011 lúc 15:15Jul 20, 2011 at 15:15

Hướng dẫn execute php file with parameters - thực thi tệp php với các tham số

Troelskntroelskntroelskn

Huy hiệu vàng 113K2525 gold badges132 silver badges154 bronze badges

3

Nếu bạn đang sử dụng nó từ tệp PHP thì bạn có thể sử dụng popen () và làm điều gì đó như sau:

$part = $show_name; //or whatever you want with spaces

$handle = popen("php -q nah.php -p=". escapeshellarg($part) . " 2>&1", "r");

Điều này sử dụng hàm escapeshellarg () để bọc biến $part trong các trích dẫn (và thoát bất kỳ trích dẫn nào bên trong nó), để nó có thể được sử dụng như một đối số shell một cách an toàn.

Diemuzi

3,4777 Huy hiệu vàng39 Huy hiệu bạc60 Huy hiệu Đồng7 gold badges39 silver badges60 bronze badges

Đã trả lời ngày 20 tháng 7 năm 2011 lúc 15:30Jul 20, 2011 at 15:30

Krityakrityakritya

3.2726 Huy hiệu vàng41 Huy hiệu bạc59 Huy hiệu Đồng6 gold badges41 silver badges59 bronze badges

Làm cách nào để thực hiện một tệp PHP?

Bạn chỉ cần làm theo các bước để chạy chương trình PHP bằng dòng lệnh ...
Mở cửa sổ thiết bị đầu cuối hoặc dòng lệnh ..
Goto thư mục hoặc thư mục được chỉ định có các tệp PHP có mặt ..
Sau đó, chúng ta có thể chạy mã PHP bằng lệnh sau: php file_name.php ..

Bạn có thể chạy PHP từ dòng lệnh không?

Tuy nhiên, PHP cho phép bạn cài đặt nó và chạy tập lệnh trên máy cục bộ của bạn mà không cần truy cập web.Chạy PHP từ Windows Command Line có thể đặc biệt hữu ích khi cố gắng phát triển nhanh chóng các tập lệnh tùy chỉnh hoặc đọc và sửa đổi các tệp cục bộ.Trong ví dụ, chúng tôi sẽ sử dụng một trình lặp PHP tùy chỉnh.PHP does allow you to install it and run scripts on your local machine with no web access needed. Running PHP from Windows command line can be especially useful when trying to rapidly develop custom scripts, or to read and modify local files. In the example, we will use a custom PHP iterator.

Làm cách nào để vượt qua đối số dòng lệnh trong PHP?

Để chuyển các đối số dòng lệnh cho tập lệnh, chúng tôi chỉ cần đặt chúng ngay sau tên tập lệnh như vậy ... Lưu ý rằng đối số thứ 0 là tên của tập lệnh PHP được chạy.Phần còn lại của mảng là các giá trị được truyền vào dòng lệnh.Các giá trị được truy cập thông qua mảng $ argv.put them right after the script name like so... Note that the 0th argument is the name of the PHP script that is run. The rest of the array are the values passed in on the command line. The values are accessed via the $argv array.

$ Argv trong PHP là gì?

$ argv - mảng các đối số được truyền cho tập lệnh.Array of arguments passed to script.