- 开发工具:
【XAMPP、PhpStorm2016.3.3、phpmyadmin】 - 问题描述:
(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打开;
b.Ctrl+F查找enable_post_data_reading变量,假如是Off则改为On;
(3)在PhpStorm中使用浏览器打开某一个你的项目文件,观察网址,查看是否使用的服务端口号是63342,形式如下:
因此问题的原因在于:
PhpStorm默认使用的是自带的内部服务器,却不使用XAMPP里面的apache服务器。
phpStorm这个内置服务器使用63342端口,而且服务器内部有问题,导致POST方法异常。
若把项目放在apache服务器的工作目录下,然后在地址栏输入localhost,查看是否到达了你的项目目录下,以此检验apache服务器是否可以正常运行程序,此时使用的是默认端口号为80的apache服务器。
(4)把上面这三句话读5遍!!!直到你理解了每一个字。
(5)查看你的项目路径是否在apache服务器路径下;
(6)如果在的话,那么更改端口号为80,查看程序是否可以运行;
(7)想办法不使用内部服务器。有两种方法:
a.将项目创建在apache服务器的工作目录下,每次运行时在浏览器地址栏直接输入localhost地址,即localhost:80/…
b.如果想要通过从PhpStorm中打开浏览器调试程序,则需更改配置;
(8)下面就来更改配置,将apache服务器目录映射到本地目录;
a. 找到 /XAMPP/apache/conf/httpd.conf 文件;
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/ ;
(9)在PhpStorm中,依次找到File->Settings->Build, Execution, Deployment->Deployment,初始是空的,点击绿色的加号添加本地服务器,名字localhost就好了,Type选择In place;
(10)创建完成后,右侧Connection标签下默认的设置已经将服务器配置为80端口下的Apache服务器,将其改成你映射到本地项目的工作目录:
来自老学姐的建议:路径一定要对应好!一定要对应好!一定要对应好!
(11)Mappings标签下的Local path设置成你本地项目的目录;
来自老学姐的建议:路径一定要对应好!一定要对应好!一定要对应好!
(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
感谢知识的总结和流动,灵活的头脑和持久的耐心~