PHP在Window中的命令提示符中传递值

时间:2012-07-27 04:25:35

标签: php cmd

我想使用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 -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 passing $_GET in linux command prompt,但它不起作用,那么我应该如何更改代码才能完成任务?

3 个答案:

答案 0 :(得分:0)

此代码将返回命令行中传递的参数数组。

<?php
var_dump($argv);
?>

答案 1 :(得分: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

答案 2 :(得分:0)

为了澄清,您是否检查过$ argv和$ argc是否包含值?创建一个简单的测试PHP脚本,它'回显$ 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包含适当的值,您所要做的就是将它们解析为所需的变量。