踩坑学php(1)
前言:
为什么要学php 呢?作为一个前端,一直有着了解后台的好奇心;作为一个计算机毕业的,一直有着实践更多设计模式和数据库相关的东西;而php 非常流行,拥有非常多的资源,入门应该容易;
为什么叫《踩坑学php》?因为每一次的踩坑就是一次提高,填坑就是在实现程序员价值;另外,正因为坑是如此的让人痛苦,足以刺激我早已被塞满的大脑,再次学习新东西;
为什么写blog?因为我在尝试一种新的学习方法,有目标,有计划、系统性地学习;
正文:
前几天开始学习php 的,花了一点时间看了w3school 的php 教程,大概知道很基础很基础的语法;
然后百度了一个php 简单项目开始研究项目代码:https://github.com/udoless/phpbeginner_gmanage
然后是搭建开发环境,使用xampp 是比较简单的,百度了教程
然后就是坑了:
index.php 里面的 seesion_start(); 前面是有html 代码的,和其他教程里面提到的不一样啊?为什么(windows)可以正常运行啊?
果然后来在mbp 上重新部署了代码就出错了:
Warning: Cannot modify header information - headers already sent by
好吧,找参考:
http://blog.csdn.net/FuDesign2008/article/details/6434044
最后是通过改php.ini 的session.auto_start = 1 ,成功的;
虽然只是改一个值,当中已经涉及了相当多的东西了
- 有一个叫php.ini 的文件,竟然是负责编译器的配置信息,这在前端是不存在,说方便也方便,但要里面的东西,要多痛苦的经历才能背下来啊?
- php 的执行流程
PHP脚本开始执行时,它可以同时发送header(标题)信息和主体信息。 Header信息(来自 header() 或 SetCookie() 函数)并不会立即发送,相反,它被保存到一个列表中。 这样就可以允许你修改标题信息,包括缺省的标题(例如 Content-Type 标题)。但是,一旦脚本发送了任何非标题的输出(例如,使用 HTML, print()或echo 调用),那么PHP就必须先发送完所有的Header,然后终止 HTTP header。而后继续发送主体数据。从这时开始,任何添加或修改Header信息的试图都是不允许的,并会发送上述的错误消息之一。
而session 又在header 里面,所以,挂了;(推断 windows 的xampp 默认session.auto_start = 1;)
然后找了一些php 的知识架构:
- http://pan.baidu.com/s/1hq9ANsg
- http://www.zhihu.com/question/19875503
然后在我的php 知识结构图里面画上了第一笔:
http://naotu.baidu.com/file/96c9ce7895576faf6069855875c6ec63?token=f18bc64953c0bd2a
参考:
- w3school:http://www.w3school.com.cn/php/
- php.ini:http://php.net/manual/zh/ini.list.php
- php 执行流程:http://blog.163.com/lgh_2002/blog/static/44017526201033115937532/