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

但是命令提示符返回未定义的索引:邮件,这是错误日志中显示的消息:

[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

尝试 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 是否包含值?创建一个简单的测试 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 包含适当的值,您所要做的就是将它们解析为所需的变量。

于 2012-07-27T04:33:17.603 回答
0

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

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