踩坑学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 ,成功的;

虽然只是改一个值,当中已经涉及了相当多的东西了 

  1. 有一个叫php.ini 的文件,竟然是负责编译器的配置信息,这在前端是不存在,说方便也方便,但要里面的东西,要多痛苦的经历才能背下来啊?
  2. 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 的知识架构:

  1. http://pan.baidu.com/s/1hq9ANsg
  2. http://www.zhihu.com/question/19875503

然后在我的php 知识结构图里面画上了第一笔:

http://naotu.baidu.com/file/96c9ce7895576faf6069855875c6ec63?token=f18bc64953c0bd2a

 

 

参考:

  1. w3school:http://www.w3school.com.cn/php/
  2. php.ini:http://php.net/manual/zh/ini.list.php
  3. php 执行流程:http://blog.163.com/lgh_2002/blog/static/44017526201033115937532/
posted @ 2015-11-30 08:11  pasico  阅读(167)  评论(0编辑  收藏  举报