2012-07-27 80 views
1

我想用cmd來執行我的php文件,並且我需要通過命令提示符將值傳遞給php,就像我們在瀏覽器中傳遞get值一樣,下面是我的代碼在窗口中傳遞命令提示符的值

<?php 
$mail = getopt('mail:'); 
print $mail['mail']; 
mail($mail['mail'], 'Mercury test mail', 'If you can read this, everything was fine!'); 
?> 

,這裏是命令我輸入在礦井CMD:

php.exe -e C:\xampp\htdocs\Me\mail.php [email protected] 

但命令提示符返回未定義指數:郵件, 這裏是在錯誤日誌中顯示的信息:

[27-Jul-2012 04:17:07 UTC] PHP Notice: Undefined index: mail in C:\xampp\htdocs\Me\mail.php on line 3 
[27-Jul-2012 04:17:07 UTC] PHP Notice: Undefined index: mail in C:\xampp\htdocs\Me\mail.php on line 4 
[27-Jul-2012 04:17:07 UTC] PHP Warning: mail(): SMTP server response: 503 No valid recipients specified. in C:\xampp\htdocs\Me\mail.php on line 4 

我只是按照這裏提到的方式:PHP passing $_GET in linux command prompt,但它不起作用,那麼我應該如何更改我的代碼以實現任務?

回答

0

此代碼將返回您在命令行中傳遞的參數數組。

<?php 
var_dump($argv); 
?> 
0

嘗試的argv:

<?php 
$email = argv[0]; 
mail($email, 'Mercury test mail', 'If you can read this, everything was fine!'); 
?> 

用法:

php script.php [email protected] 
+0

雅,如果我使用argv,問題可以解決。實際上,如果我只需要傳遞一個參數,這是一個很好的方法,但有時我可能需要傳遞更多的值,比如說,如果我可以像使用GET方法那樣傳遞值,那麼使用名稱參數,這樣做會更方便,這就是爲什麼我想問 – Conrad 2012-07-27 04:34:46

0

爲了澄清,你檢查,看看是否$的argv和$ ARGC包含值?創建一個簡單的測試PHP腳本,其中echo'$ argc的值並使用print_r()函數顯示$ argv的值。

<? 
echo "Argc = $argc"; 
print_r($argv); 
?> 

然後運行該腳本

php.exe [script file name].php -test -etc... 

此外,嘗試通過使用斜槓,而不是短線值。例如:

php.exe [script name].php /option1 /option2 ... 

如果$ argc和$ argv的包含適當的值,所有你所要做的就是分析他們進入你想要的變量。

+0

這是我如何更改我的代碼,以查看是否可以通過值<?php \t $ mail = $ argv [1]; \t print $ mail; \t郵件($郵件,'水星測試郵件','如果你能讀懂這個,一切都很好!'); ?> 但是,如果有很多值需要傳入,我認爲有類似[email protected]的東西,所以要通過變量的名稱傳遞變量,它會減少混淆 – Conrad 2012-07-27 04:37:17

相關問題