You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地直接调用PHP脚本并传递$_POST数据的方法

直接本地调用PHP脚本模拟POST请求的方法

要让本地PHP CLI调用时,原脚本无需修改就能正常读取$_POST数组,你需要模拟Web服务器的CGI请求环境——因为PHP在CLI模式下默认不会自动解析POST数据到$_POST,必须手动设置对应的环境变量并通过标准输入传递POST数据。

具体实现命令

保持你的$postData格式不变(URL编码的表单数据),用以下两种方式之一执行:

方式1:使用php命令

postData='form_name=Georg&form_email=george%40example.com&form_message=Something%20new&id_button=true'
CONTENT_TYPE='application/x-www-form-urlencoded' php /var/www/example/form.php <<< "$postData"

方式2:使用php-cgi命令(更贴合CGI请求逻辑)

postData='form_name=Georg&form_email=george%40example.com&form_message=Something%20new&id_button=true'
echo "$postData" | CONTENT_TYPE='application/x-www-form-urlencoded' php-cgi /var/www/example/form.php

原理说明

  • Web服务器处理POST表单请求时,会设置CONTENT_TYPE环境变量为application/x-www-form-urlencoded(对应表单的默认编码类型),同时将URL编码的POST数据通过**标准输入(stdin)**传递给PHP。
  • PHP的CGI模式(包括php-cgi命令,以及php命令在设置了对应环境变量时)会读取这个环境变量和标准输入的数据,自动解析填充到$_POST数组中,完全兼容原脚本的$_POST['form_email']这类读取逻辑。

注意事项

  • 必须用双引号包裹$postData,避免Bash解析其中的&等特殊字符导致命令拆分。
  • 不要用--传递参数的方式,因为原脚本依赖的是$_POST而非命令行参数($argv),参数传递无法触发PHP填充$_POST。

内容的提问来源于stack exchange,提问作者jamacoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:20:14