當前位置:首頁 » 編程語言 » php命令行參數

php命令行參數

發布時間: 2022-04-14 06:09:14

① windows下如何實現在命令行下運行php文件

window下,假設php安裝目錄為c:\program files\php5\,那麼使用命令窗口進入到該路徑下,敲入php hello.php回車,則會執行當前路徑下的hello.php文件,如果要指向其他路徑下php文件,可以在php 路徑/hello.php ,這種形式稱為CLI模式,我們平時通過瀏覽器看到的那種稱為CGI模式,至於傳遞參數,php文件在cli模式下,直接通過在文件名稱後面接參數,多個參數中間用空格隔開,在php文件裡面是通過兩個變數來獲取參數的,一個是$argv,一個是$argc,前者是傳遞參數的數組,默認第一個為php文件的名稱;後者為$argv的數組個數。
linux下,一般程序安裝都會安裝在/usr/bin/php下面,可以通過man php查看一下,如果有信息說明可以使用,使用方法類似於window下。如果前面這步成立,那麼你可以直接 php php文件 來運行php文件,如果man php沒有信息,則說明當前php執行文件沒有在環境路徑裡面,可以修改環境路徑包含php路徑,也可以類似於window進入php路徑,在執行 php php文件。其他類似於window下。

② 如何在命令行下運行PHP腳本[帶參數]

.php:<?phpecho "Hello from the CLI";?現在,試著在命令行提示符下運行這個程序,方法是調用CLI可執行文件並提供腳本的文件名: #php phphello.php 輸出Hello from the CLI ----------------- 使用標準的輸入和輸出 你可以在自己的PHP腳本里使用這三個常量,以接受用戶的輸入,或者顯示處理和計算的結果。要更好地理解這一點,可以看看下面的腳本(列表A):列表A<?php// ask for input fwrite(STDOUT, "Enter your name: "); // get input $name = trim(fgets(STDIN)); // write input back fwrite(STDOUT, "Hello, $name!");?Look what happens when you run it: shell php hello.php Enter your name: Joe Hello, Joe! 在這個腳本里,fwrite()函數首先會向標準的輸出設備寫一條消息,詢問用戶的姓名。然後它會把從標准輸入設備獲得的用戶輸入信息讀 取到一個PHP變數里,並它把合並成為一個字元串。然後就用fwrite()把這個字元串列印輸出到標準的輸出設備上。 ----------------- 使用命令行自變數 在命令行里輸入程序參數來更改其運行方式是很常見的做法。你也可以對CLI程序這樣做。PHP CLI帶有兩個特殊的變數,專門用來達到這個目的:一個是$argv變數,它通過命令行把傳遞給PHP腳本的參數保存為單獨的數組元素;另一個是$argc變數,它用來保存$argv數組里元素的個數。 shell php phptest.php chocolate 276 "killer tie, de!"Array( [0] = test.php [1] = chocolate[2] = 276[3] = killer tie, de!)正如你可以從輸出的結果看到的,傳遞給test.php的值會自動地作為數組元素出現在$argv里。 要注意的是,$argvis的第一個自變數總是 腳本自己的名稱。 下面是一個更加復雜的例子(列表C):列表C代碼 下面是其用法的示例: shell php phpbook.php 21/05/2005 7 single 在這里,腳本首先會檢查$argc,以確保自變數的數量符合要求。它然後會從$argv里提取出每一個自變數,把它們列印輸出到標準的輸出

③ 如何獲取PHP命令行參數

如何獲取PHP命令行參數

使用 PHP 開發的同學多少都會接觸過 CLI 命令行。經常會有一些定時任務或者一些腳本直接使用命令行處理會更加的方便,有些時候我們會需要像網頁的 GET 、 POST 一樣為這些命令行腳本提供參數。比如在針對某些日期做統計的腳本,就需要傳遞一個日期給它,這樣我們就統計指定日期的一些數據。這類需求應該非常常見,那麼,我們都是如何來接收這些命令行的參數的呢?今天,就來介紹一下這方面的內容。

$argv 獲得所有空格分隔的參數列表

這個變數估計是大家用得比較多的一個接參變數了。它是 PHP 為我們准備好的一個固定變數,目的就是獲取傳遞給腳本的參數數組。

print_r($argv); // php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd // Array // ( // [0] => 如何獲取PHP命令行參數.php // [1] => --a=1 // [2] => -b=2 // [3] => -c=3 // [4] => -d=4 // [5] => --e=5 // [6] => ccc // [7] => ddd // )

這個數組是以參數間隔的空格進行分隔的。第1個元素是當前運行的腳本文件名,也就是說,不管有沒有參數,這個變數一定會有一個 $argv[0] 表示的是當前的腳本文件名。

在日常的開發需求中,其實使用這個變數就已經夠用了。但是這明顯不會是我們今天的主題,大家注意到上面的代碼中我們有很多參數是 -x=xxx 的形式,這種形式的參數是不是和 Linux 的命令選項非常像,沒錯,這就是我們今天要重點介紹的:從命令行參數列表中獲取選項。

getopt() 從命令行參數列表中獲取選項

其實就是這樣一個簡單的函數,我們就可以像 Linux 的命令選項一樣獲取指定的命令值。而且不是像 $argv 按空格進行分隔,命令選項函數會將這些命令選項封裝成數組,組成以選項名為鍵,以等號後面的內容為值的數組,更加方便我們的使用。

// php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('a:b:c:d:e:f:')); // Array // ( // [b] => 2 // [c] => 3 // [d] => 4 // )

是不是很神奇,而且非常直觀吧,我們直接就拿到了 b 、 c 、d 的內容並且是格式非常清晰的鍵值數組形式。有同學要問了,a 和 e 呢?還有後面的 ccc 、 ddd 呢?

首先要說明的是,ccc 和 ddd 不是標準的選項參數,也就是說,這個函數接收的內容是以 - 開頭的選項,所以 ccc 和 ddd 不會在這里輸出,並且需要注意的是,非選項參數會中斷選項參數的獲取,在 ccc 之後如果繼續添加 - 開頭的選項也是無法獲取到的,這個我們後面還會看到。而 -- 開頭的選項參數呢?我們直接看下面的長選項功能。

長選項 // php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('', ['a:','b:','c:','d:','e:','f:'])); // Array // ( // [a] => 1 // [e] => 5 // )

沒錯,getopt() 函數的第二個參數就是定義這種 -- 開頭的長選項的,而且需要注意的是,第一個參數是字元串類型,第二個長選項參數是數組類型的。那麼我們把它們結合起來,就當然可以獲取到全部的參數信息啦!

// php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('a:b:c:d:e:f:', ['a:','b:','c:','d:','e:','f:'])); // Array // ( // [a] => 1 // [b] => 2 // [c] => 3 // [d] => 4 // [e] => 5 // )

OK,參數選項獲取沒問題了吧,細心的同學肯定又發現了一個問題,這個 getopt() 函數的參數中定義的選項名稱後面為啥都要加個冒號?這就涉及到我們的冒號規則了,請直接往下看。

冒號規則

getopt() 的前兩個參數都支持一套關於選項獲取的規則:

單獨的字元(不接受值) 後面跟隨冒號的字元(此選項需要值) 後面跟隨兩個冒號的字元(此選項的值可選)

我們還是直接通過代碼來看一下。

// 一 // php 如何獲取PHP命令行參數.php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd print_r(getopt('abcdef')); // Array // ( // [b] => // [c] => // [d] => // ) // 二 // php 如何獲取PHP命令行參數.php -f print_r(getopt('f::')); // Array // ( // [f] => // ) print_r(getopt('f:')); // Array // ( // ) // 三 // php 如何獲取PHP命令行參數.php -f 22 print_r(getopt('f::')); // Array // ( // [f] => // ) print_r(getopt('f:')); // Array // ( // [f] => 22 // ) // 四 // php 如何獲取PHP命令行參數.php -f=22 print_r(getopt('f::')); // Array // ( // [f] => 22 // ) print_r(getopt('f:')); // Array // ( // [f] => 22 // )

這一段比較長,我們一塊一塊來看。首先是不帶冒號的 abcdef 寫法,返回的數組中都包含鍵,但沒有值,對應上面的規則就是不接受這些參數選項的值,你傳了這些參數選項也是只有鍵名而內容是空的。

第二段是定義了一個參數,但是不給值,這時,雙冒號 :: 會有鍵名,而單冒號 : 則什麼都沒有。

第三段是空格形式的選項值,雙冒號 :: 有鍵名但沒有值,單冒號 : 鍵值正常。

第四段是等號 = 形式的選項值,單雙冒號都正常接收到鍵值。

選項參數中斷

上文中我們提到過參數中斷的問題,就是在選項參數之後如果有一個非選項參數的參數出現,getopt() 就無法再獲取到這個非選項參數後面的所有內容了。

// php 如何獲取PHP命令行參數.php -f=22 aa -b=33 // 選項的解析會終止於找到的第一個非選項,之後的任何東西都會被丟棄。 // Array // ( // [f] => 22 // )

通過這個測試可以清晰的看出後面的 b 選項無法獲取。這時,如果我們想知道選項參數在什麼地方或者因為哪個參數而中斷的話,就可以使用 getopt() 函數的第三個參數了。

// php 如何獲取PHP命令行參數.php -f=22 aa -b=33 $optind = null; getopt('f:b:', [], $optind); echo $optind, PHP_EOL; // 返回中斷位置的索引值,2 echo $argv[$optind], PHP_EOL; // 等同於 $argv 的索引順序,aa

注釋已經寫得很清晰了,第三個參數會回調一個參數選項中斷位置的索引,並且這個索引是和 $argv 的索引順序位置一致的。

總結

說實話,在沒看文檔前真的只知道有一個 $argv 變數可以用來獲取命令行腳本的參數,通過這次學習才發現原來還有一個這么強大的選項參數函數。學習的過程非常簡單,如何運用到真實的項目中才是關鍵所在,加油學習,努力實踐吧!

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96PHP%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.php

④ 如何在命令行下運行php腳本(寫出兩種方式)同時向php腳本傳遞參數

測試可用 :
?

<?php

$options = getopt("f:");

var_mp($options);

?>

php aaa.php -f "123456"
?

array(1) {
["f"]=>
string(5) "123456"
}

⑤ 如何在linux命令下運行php腳本,同時向php腳本傳遞參數

好吧,這個網路一下應該很好找「php接收命令行參數」。

test.php代碼:

<?php
print_r($argv);
?>

然後命令行:

phptest.php

輸出是:

Array
(
[0]=>test.php
)

再用命令行:

phptest.phparg1arg2

輸出是:

Array
(
[0]=>test.php
[1]=>arg1
[2]=>arg2
)

⑥ php如何獲取網址中的參數

比如有一個網址為

http://域名/goods.php?u=59&id=24#pinglun

我想得到這個id值

可以用正則,也可以用php函數解析到數組中

用正則可以這樣

preg_match('/id=(d+)/',$_SERVER["REQUEST_URI"],$m);//$_SERVER 這個表示當前網址url

print_r($m[1]);exit;

或者用parse_url()及parse_str()函數

$cur_q=parse_url($_SERVER["REQUEST_URI"],PHP_URL_QUERY);

parse_str($cur_q,$myArray);

print_r($myArray["id"]);exit;

拓展資料

PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

PHP的特性包括:

1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。

2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,

PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;

PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。

3. PHP支持幾乎所有流行的資料庫以及操作系統。

4. 最重要的是PHP可以用C、C++進行程序的擴展!

參考資料:網路 PHP

⑦ php中如何輸出網址參數filename=test.txt文本的內容.

Php代碼
$_SERVER["SERVER_PORT"] //獲取埠
$_SERVER['HTTP_HOST'] //獲取域名或主機地址 如test.cn 或http://www.test.cn 或2010.test.cn
$_SERVER['SERVER_NAME'] //獲取域名或主機地址 註:只是主域名 如 test.cn
$_SERVER["REQUEST_URI"] //獲取域名後的詳細地址 如:/index.php?id=123 ...
$_SERVER['PHP_SELF'] //獲取PHP文件名
$_SERVER["QUERY_STRING"] //獲取PHP後的網址參數
$_SERVER['HTTP_REFERER'] //來源網頁的詳細地址

輸出:

Php代碼
echo "rewrite: ".$_GET["rewrite"];
echo "<br>SERVER_PORT: ".$_SERVER["SERVER_PORT"];
echo "<br>HTTP_HOST: ".$_SERVER["HTTP_HOST"];
echo "<br>SERVER_NAME: ".$_SERVER["SERVER_NAME"];
echo "<br>REQUEST_URI: ".$_SERVER["REQUEST_URI"];
echo "<br>PHP_SELF: ".$_SERVER["PHP_SELF"];
echo "<br>QUERY_STRING: ".$_SERVER["QUERY_STRING"];
echo "<br>HTTP_REFERER: ".$_SERVER["HTTP_REFERER"];

注意:
PHP中的SERVER_NAME 和HTTP_HOST的區別

地址欄里輸入以下網址:

1) http://www.test.cn/ 時
對應的值為:
HTTP_HOST: www.test.cn
SERVER_NAME: test.cn

2) http://blog.test.cn / 時
對應的值為:
HTTP_HOST: blog.test.cn
SERVER_NAME: test.cn

php $_SERVER 屬性說明

$_SERVER[ 'PHP_SELF' ] #當前正在執行腳本的文件名,與 document root相關。
$_SERVER[ 'argv' ] #傳遞給該腳本的參數。
$_SERVER[ 'argc' ] #包含傳遞給程序的命令行參數的個數(如果運行在命令行模式)。
$_SERVER[ 'GATEWAY_INTERFACE' ] #伺服器使用的 CGI 規范的版本。例如,「CGI/ 1.1 」。
$_SERVER[ 'SERVER_NAME' ] #當前運行腳本所在伺服器主機的名稱。
$_SERVER[ 'SERVER_SOFTWARE' ] #伺服器標識的字串,在響應請求時的頭部中給出。
$_SERVER[ 'SERVER_PROTOCOL' ] #請求頁面時通信協議的名稱和版本。例如,「HTTP/ 1.0 」。
$_SERVER[ 'REQUEST_METHOD' ] #訪問頁面時的請求方法。例如:「GET」、「HEAD」,「POST」,「PUT」。
$_SERVER[ 'QUERY_STRING' ] #查詢(query)的字元串。
$_SERVER[ 'DOCUMENT_ROOT' ] #當前運行腳本所在的文檔根目錄。在伺服器配置文件中定義。
$_SERVER[ 'HTTP_ACCEPT' ] #當前請求的 Accept: 頭部的內容。
$_SERVER[ 'HTTP_ACCEPT_CHARSET' ] #當前請求的 Accept-Charset: 頭部的內容。例如:「iso- 8859 - 1 ,*,utf- 8 」。
$_SERVER[ 'HTTP_ACCEPT_ENCODING' ] #當前請求的 Accept-Encoding: 頭部的內容。例如:「gzip」。
$_SERVER[ 'HTTP_ACCEPT_LANGUAGE' ]# 當前請求的 Accept-Language: 頭部的內容。例如:「en」。
$_SERVER[ 'HTTP_CONNECTION' ] #當前請求的 Connection: 頭部的內容。例如:「Keep-Alive」。
$_SERVER[ 'HTTP_HOST' ] #當前請求的 Host: 頭部的內容。
$_SERVER[ 'HTTP_REFERER' ] #鏈接到當前頁面的前一頁面的 URL 地址。
$_SERVER[ 'HTTP_USER_AGENT' ] #當前請求的 User_Agent: 頭部的內容。
$_SERVER[ 'HTTPS' ] — 如果通過https訪問,則被設為一個非空的值(on),否則返回off
$_SERVER[ 'REMOTE_ADDR' ] #正在瀏覽當前頁面用戶的 IP 地址。
$_SERVER[ 'REMOTE_HOST' ] #正在瀏覽當前頁面用戶的主機名。
$_SERVER[ 'REMOTE_PORT' ] #用戶連接到伺服器時所使用的埠。
$_SERVER[ 'SCRIPT_FILENAME' ] #當前執行腳本的絕對路徑名。
$_SERVER[ 'SERVER_ADMIN' ] #管理員信息
$_SERVER[ 'SERVER_PORT' ] #伺服器所使用的埠
$_SERVER[ 'SERVER_SIGNATURE' ] #包含伺服器版本和虛擬主機名的字元串。
$_SERVER[ 'PATH_TRANSLATED' ] #當前腳本所在文件系統(不是文檔根目錄)的基本路徑。
$_SERVER[ 'SCRIPT_NAME' ] #包含當前腳本的路徑。這在頁面需要指向自己時非常有用。
$_SERVER[ 'REQUEST_URI' ] #訪問此頁面所需的 URI。例如,「/index.html」。
$_SERVER[ 'PHP_AUTH_USER' ] #當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的用戶名。
$_SERVER[ 'PHP_AUTH_PW' ] #當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的密碼。
$_SERVER[ 'AUTH_TYPE' ] #當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是認證的類型。

⑧ thinkphp中的commond這個方法是干什麼用的,參數怎麼寫

thinkphp5.1中,command用於編寫可在命令行執行的方法,入口是根目錄的 think 這個文件

編寫文件 application/common/command/Testing.php

namespaceappcommoncommand;

usethinkconsoleCommand;
usethinkconsoleInput;
usethinkconsoleinputArgument;
usethinkconsoleinputOption;
usethinkconsoleOutput;

classTestingextendsCommand
{
protectedfunctionconfigure()
{
$this->setName('testing')
->addArgument('action',Argument::REQUIRED,"testargument")
->addOption('username','u',Option::VALUE_OPTIONAL,'username,test')
->setDescription('Testingcommand');
}

/**
*命令調度
*@paramInput$input
*@paramOutput$output
*@returnmixed
*/
protectedfunctionexecute(Input$input,Output$output)
{
$action=$input->getArgument('action');

$output->writeln('receivedargumentaction:'.$action);

if($input->hasOption('username')){
$username=$input->getOption('username');
$output->writeln('receivedoptionusername:'.$username);
}

$output->writeln('exit.');
}
}

增加配置 application/command.php

<?php

return[
'testing'=>'appcommoncommandTesting',
];

命令行測試 切換到application上級目錄( think文件所在的目錄 )

phpthinktestingmockAction-umockUsername

即可看到執行結果

文檔參考:thinkphp 命令行 自定義指令

⑨ 如何通過Linux命令行使用和運行PHP腳本

在 Linux 下執行 php 腳本時通常是可以使用以下命令:#/usr/local/php/bin/php test.php

為簡化輸入可把此php執行程序 到系統命令目錄下:
#cp /usr/local/php/bin/php /usr/sbin/

驗證:輸入以下命令,如正確獲取 php 版本,說明操作成功。
#php -v

這樣,以後再執行PHP腳本時可直接採用以下輸入方式即可。
#php a.php

熱點內容
米號源碼 發布:2025-01-20 21:55:30 瀏覽:892
電信四川dns伺服器ip 發布:2025-01-20 21:54:51 瀏覽:91
電腦彈出腳本錯誤還能繼續使用嗎 發布:2025-01-20 21:42:29 瀏覽:585
安卓私密照片在哪裡 發布:2025-01-20 21:41:05 瀏覽:4
同濟復試編譯原理 發布:2025-01-20 21:33:54 瀏覽:309
c語言判斷字母 發布:2025-01-20 21:31:09 瀏覽:423
ftp伺服器搭建linux 發布:2025-01-20 21:26:05 瀏覽:334
安卓手機瀏覽器如何翻譯英文網頁 發布:2025-01-20 21:21:01 瀏覽:422
刺客信條梟雄怎麼調成低配置 發布:2025-01-20 21:20:51 瀏覽:709
nss存儲 發布:2025-01-20 21:04:47 瀏覽:35