PhpStorm表单提交时获取不到post数据的解决方法

解决PhpStorm表单提交时获取不到post数据问题,将apache服务器目录映射到本地目录,更改PhpStorm配置,实现其直接调用本地服务器打开浏览器调试程序,解决Apache/2.4.23 (Win64) PHP/5.6.25 Server at localhost Port 80报错问题。

博主运行PHP环境:windows+PhpStorm+wamp

初学php,用echo $_POST["variable"]和var_dump($_POST) 都获取不到post数据。

解决方法如下:

1.找到php.ini 配置文件,查找enable_post_data_reading变量,确保其打开状态:

如果是:enable_post_data_reading = Off,将其Off改为On。

2.观察你运行php的浏览器地址,会发现在PhpStorm中打开浏览器使用的服务端口号是63342(URL是localhost:63342/这样的形式)

问题的原因在于:PhpStorm默认使用的是自带的内部服务器,而不使用wamp里面的apache服务器。

PhpStorm这个内置服务器使用63342端口,而且服务器内部有问题,导致POST方法异常;

而如果把项目放在Apache服务器的工作目录下,在地址栏输入localhost,此时使用的是Apache服务器,默认端口号为80,Apache服务器可以正常运行程序。

既然PhpStorm内部服务器有问题,那解决方法就是想办法不使用内部服务器。有两种方法:

Ⅰ.将项目创建在Apache服务器的工作目录下,每次运行时在浏览器地址栏直接输入localhost地址

Ⅱ.如果仍希望通过从PhpStorm中打开浏览器调试程序,可以通过更改配置实现:

(1)首先将apache服务器目录映射到本地目录,做法如下:

a. 找到 \wamp64\bin\apache\apache2.4.23\conf\httpd.conf 文件并打开

b. 找到 <IfModule alias_module> </IfModule> 代码块

c. 在<IfModule alias_module>的子级加上如下代码:

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

d. 在与 <ifModule alias_module> 同级的地方加上一段代码, 如下:

<Directory "E:/WebWorkspace">
    AllowOverride All
    Options Indexes FollowSymLinks Includes ExecCGI
    Require all granted
</Directory>

现在重启Apache, 访问 : http://localhost/Deshun/ 就可以了

(2)更改PhpStorm配置,实现其直接调用本地服务器打开浏览器调试程序:

a.在PhpStorm中,找到菜单栏File(文件)->Settings(设置)->Build, Execution, Deployment->Deployment,初始是空的,点击绿色的加号添加本地服务器,名字localhost就好了,Type选择In place:

PhpStorm表单提交时获取不到post数据的解决方法 经验总结 第1张

b.创建完成后,右侧Connection标签下默认的设置已经将服务器配置为80端口下的Apache服务器,即http://localhost

将其改成你映射到本地项目的工作目录:

PhpStorm表单提交时获取不到post数据的解决方法 经验总结 第2张

c.Mappings标签下的Local path设置成你本地项目的目录:PhpStorm表单提交时获取不到post数据的解决方法 经验总结 第3张

此时从PhpStorm中点击浏览器,访问的URL已经没有了63342端口这个字段,而是使用了本地Apache服务器,相应的表单数据也可以正常接收了。


参考资料:
1.知乎:木子林夕的回答
2.HolyNova的博文:Apache HTTP 服务器目录映射到本地目录



赞 (0)
分享到: +

评论 沙发

Avatar

换个身份

  • 昵称 (必填)
  • 邮箱 (选填)