如何使用curl调用此PHP脚本?(来自bash命令行)
我用PHP编写了一个脚本,其目的只是查询数据库,然后发送一封包含结果的电子邮件 我可以通过浏览器调用脚本,只需使用查询字符串请求URL,例如在地址栏中键入如何使用curl调用此PHP脚本?(来自bash命令行),php,bash,curl,Php,Bash,Curl,我用PHP编写了一个脚本,其目的只是查询数据库,然后发送一封包含结果的电子邮件 我可以通过浏览器调用脚本,只需使用查询字符串请求URL,例如在地址栏中键入 http://localhost/myapp/index.php?model=manage&view=main 这将调用脚本,一切正常。 注意:一些HTML是由脚本生成的,这是由于我的脚本连接到一个更大的应用程序 当我尝试使用以下命令从bash命令行调用脚本时: curl http://localhost/myapp/index.p
http://localhost/myapp/index.php?model=manage&view=main
这将调用脚本,一切正常。
注意:一些HTML是由脚本生成的,这是由于我的脚本连接到一个更大的应用程序
当我尝试使用以下命令从bash命令行调用脚本时:
curl http://localhost/myapp/index.php?model=manage&view=main
curl显示脚本生成的HTML,但是curl过程没有完成-我必须ctrl+c
退出curl过程,而且脚本处理不正确,电子邮件也没有发送
apache访问日志输出
Apache似乎正在截断查询字符串中的第二个变量
127.0.0.1---[08/Apr/2015:01:28:47+1200]“GET/myapp/index.php?model=manage HTTP/1.1“200 23549”-“curl/7.35.0”您需要转义
和
字符,例如将URL放在双引号中,如下所示:
curl "http://localhost/myapp/index.php?model=manage&view=main"
这将保留第二个查询参数。我解决这个问题的方法是在打开开发工具的情况下在chrome中请求URL。
我在网络选项卡中查看请求,然后右键单击请求并选择“另存为curl选项”
然后,我将(长)curl命令粘贴到终端中,其中包含使curl请求工作所需的选项和参数 您可以通过:
curl重定向curl的输出http://localhost/myapp/index.php?model=manage&view=main 2> /dev/null
谢谢,但这仍然没有解决问题。您可以使用PHP CLI在同一台服务器上执行脚本:PHP index.PHP manage main
,但必须替换$\u GET['model']->$argv[1]
和$\u GET['view']
->$argv[2]
在代码上。好主意,但无法更改$\u GET
变量,因为执行初始化的较大应用程序使用它们。另外,我怀疑mod apache
和php cli
之间的php.ini
差异可能会导致生产中出现问题。请尝试使用wget
而不是curl
(将输出重定向到/dev/null)upvote,感谢日志现在确实显示了正确的URL。虽然浏览器中的脚本输出与控制台中的脚本输出不同,但脚本仍没有执行?生成的html页面是否包含对其他脚本的任何AJAX请求?@浏览器和控制台之间的最大html输出相同。i、 e.
部分(以及所有链接的资源-样式表等)被输出。我能看出的主要区别是浏览器随后读取
,并对链接的资源(样式表、js等)发出后续请求(这些都显示在access.log中)。使用curl,只有一个请求命中apachechechecheck,检查浏览器发送的头,并在curl命令中复制这些头