1

cmdを使用してphpファイルを実行したいのですが、ブラウザーでget値を渡すのと同じように、コマンドプロンプトを介してphpに値を渡す必要があります。以下は私のコードです。

<?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 -mail=me@gmail.com

しかし、コマンドプロンプトは未定義のインデックスを返します:mail、そしてこれがエラーログに表示されるメッセージです:

[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はLinuxコマンドプロンプトで$ _GETを渡しますが、それは機能しません。タスクを達成するためにコードをどのように変更する必要がありますか?

4

3 に答える 3

0

このコードは、コマンドラインで渡された引数の配列を返します。

<?php
var_dump($argv);
?>
于 2012-07-27T04:29:20.453 に答える
0

argvを試してください:

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

使用法 :

php script.php email@email.com
于 2012-07-27T04:30:24.620 に答える
0

明確にするために、$argv と $argc に値が含まれているかどうかを確認しましたか? $argc の値をエコーし​​、print_r() 関数を使用して $argv の値を表示する簡単なテスト PHP スクリプトを作成します。

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

次に、このスクリプトを次のように実行します

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

また、ダッシュの代わりにスラッシュを使用して値を渡してみてください。例えば:

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

$argc と $argv に適切な値が含まれている場合は、それらを目的の変数に解析するだけです。

于 2012-07-27T04:33:17.603 に答える