在本地wamp设置的批处理文件中通过url传递php变量

时间:2013-03-12 16:32:13

标签: php windows-7 cmd

环境:Windows 7,PHP 5.3.13,Apache 2.2.22(WAMP) 在当地工作 访问外部Web服务

我正在尝试通过批处理命令提示符内的URL在PHP中分配一个全局变量来调用Web服务。请参阅以下批次行:

start / b“C:\ wamp \ bin \ php \ php5.3.13 \ php.exe”-q“C:\ wamp \ www \ test \ scripts \ apiTest.php?itemID =%1”> API_Log%dtStamp%的.txt

使用实际的商品ID运行此bat文件时: C:\ wamp \ www \ test \ scripts \ apiTest.bat 1234567

我收到未定义的索引错误,找不到匹配的404。在检查HTTP数据包时,我注意到URL已经丢弃(从未收到)我在执行字符串中指定的itemID。 HTTP信息: http://api.service.com/items//items.xml 这里有http://api.service.com/items/(missing标识信息)/items.xml

我绝对可以直接从cmd / batch访问带有参数的特定网址,我直接将该变量输入到网址中,并在浏览器中执行此过程没有任何问题。

我怀疑将api url直接发送到php可执行文件,因为参数不可能。身份证号码没有正确附加,甚至根本没有追加。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

而不是像GET请求一样发送它,你应该使用类似的东西:

start /b "C:\wamp\bin\php\php5.3.13\php.exe" -q "C:\wamp\www\test\scripts\apiTest.php %1" > API_Log%dtStamp%.txt

然后使用argv变量访问该数据。

echo $argv[1];

正在运行C:\wamp\www\test\scripts\apiTest.bat 1234567将回显1234567

另外,如果你需要它,命令在$argv[0]运行,我有时在输出我的脚本的语法时使用它。例如:

echo "Syntax: {$argv[0]} [username]";