我想使用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!');
?>
这是我在命令中输入的命令:
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,但它不起作用,那么我应该如何更改代码才能完成任务?
此代码将返回在命令行中传递的参数数组。
<?php
var_dump($argv);
?>
尝试argv:
<?php
$email = argv[0];
mail($email, 'Mercury test mail', 'If you can read this, everything was fine!');
?>
用法:
php script.php email@email.com
为了澄清,您是否检查过$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包含适当的值,那么您所要做的就是将它们解析为所需的变量。