PhpStorm导致php表单提交时获取不到post数据

本文描述了在使用PhpStorm2016.3.3开发PHP时遇到的一个问题,即在提交表单时无法通过POST方式获取数据。作者通过检查php.ini配置文件中的enable_post_data_reading变量,发现其关闭状态导致问题。解决问题的关键是确保该变量开启,并调整PhpStorm的配置,避免使用内置服务器,而是将项目部署在Apache服务器下。文章提供了详细的步骤和配置修改方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 开发工具:
    【XAMPP、PhpStorm2016.3.3、phpmyadmin】
  2. 问题描述:
    (1)php语言编写个人资料设置的图片上传功能时,发现使用post请求方式获取不到数据;
    (2)测试发现get方式可以,使用echo、var_dump()检测错误;
    (3)根据错误undefined index等组织错误描述语言;
    (4)百度+N次,最终找到解决【我】的问题的思路。

我读了这篇博文很多次才完全搞懂并应用到自己的问题上,方案总要和你的实际情况来做对应。

Tips:
(1)定位你的错误,发现引发它的稍深层次的原因;
(2)要使用尽可能准确的词语去描述你遇到的问题;
(3)要在正确的地方修改你的代码;
(4)当你看不懂一篇博文的时候,不要轻易以为它无法帮助你解决,可能仅仅是…你忽略了什么而且你比较没耐心。


解决思路【假定你不是一个完完全全的小白


(1)在程序中,尝试使用以下语句测试是否可以获取post方式提交的数据;

echo $_POST["variable"];
var_dump($_POST["variable"]) ;

(2)找到php.ini 配置文件,查找enable_post_data_reading变量,确保其打开状态;
a.在【你】的XAMPP的安装路径下的php下的php.ini,可以用PhpStorm打开;
1
b.Ctrl+F查找enable_post_data_reading变量,假如是Off则改为On;
2


(3)在PhpStorm中使用浏览器打开某一个你的项目文件,观察网址,查看是否使用的服务端口号是63342,形式如下:
这里写图片描述
3


因此问题的原因在于
PhpStorm默认使用的是自带的内部服务器,却不使用XAMPP里面的apache服务器
phpStorm这个内置服务器使用63342端口,而且服务器内部有问题,导致POST方法异常。
若把项目放在apache服务器的工作目录下,然后在地址栏输入localhost,查看是否到达了你的项目目录下,以此检验apache服务器是否可以正常运行程序,此时使用的是默认端口号为80的apache服务器。


(4)把上面这三句话读5遍!!!直到你理解了每一个字。
(5)查看你的项目路径是否在apache服务器路径下;
5
(6)如果在的话,那么更改端口号为80,查看程序是否可以运行;
6


(7)想办法不使用内部服务器。有两种方法:
a.将项目创建在apache服务器的工作目录下,每次运行时在浏览器地址栏直接输入localhost地址,即localhost:80/…
b.如果想要通过从PhpStorm中打开浏览器调试程序,则需更改配置;


(8)下面就来更改配置,将apache服务器目录映射到本地目录;
a. 找到 /XAMPP/apache/conf/httpd.conf 文件;
7
b. 使用PhpStorm打开后,找到 <IfModule alias_module> </ifModule> 代码块;
c. 在此代码块的子级即这个代码块中加上如下代码:

 # /XAMPP/htdocs/BONC/ : 其它磁盘上目录的别名, 就是你想映射过来的目录的别名
 # "E/XAMPP/htdocs/BONC/" : 这个是目录的绝对路径
 Alias /XAMPP/htdocs/BONC/ "E/XAMPP/htdocs/BONC/"
 # 现在就可以通过 //localhost//XAMPP/htdocs/BONC/ 访问到 E盘下XAMPP/htdocs/BONC文件夹里的项目了

d. 在与此代码块同级的地方,即这个代码块前面【或】后面加上如下代码:

<Directory "E/XAMPP/htdocs/BONC/">
    AllowOverride All
    Options Indexes FollowSymLinks Includes ExecCGI
    Require all granted
</Directory>

e.重启apache,分别点击Stop再Start,之后访问 : http://localhost/BONC/ ;
8


(9)在PhpStorm中,依次找到File->Settings->Build, Execution, Deployment->Deployment,初始是空的,点击绿色的加号添加本地服务器,名字localhost就好了,Type选择In place;
(10)创建完成后,右侧Connection标签下默认的设置已经将服务器配置为80端口下的Apache服务器,将其改成你映射到本地项目的工作目录:
来自老学姐的建议:路径一定要对应好!一定要对应好!一定要对应好!
9


(11)Mappings标签下的Local path设置成你本地项目的目录;
来自老学姐的建议:路径一定要对应好!一定要对应好!一定要对应好!
10


(12)从PhpStorm中点击浏览器查看访问的URL是否含有63342端口,没有的话…就成..成功…成功了!


特别鸣谢:
1.http://blog.youkuaiyun.com/whd526/article/details/53263181
2.https://www.zhihu.com/question/41113449/answer/120891290
3.http://blog.youkuaiyun.com/zsp_1111/article/details/8822588#
4.http://blog.youkuaiyun.com/qq12547345/article/details/68065648
感谢知识的总结和流动,灵活的头脑和持久的耐心~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值