2012-07-27 78 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