前言:

为什么要学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/

踩坑学php(1)的更多相关文章

  1. 记jQuery.fn.show的一次踩坑和问题排查

    最近很少已经很少用jQuery,因为主攻移动端,常用Zepto,其实很多细节和jQuery并不一样.最近又无意中接触到了PC的需求和IE6, 使用了jQuery,刚好踩坑了,特意记录一下. 本文内容如 ...

  2. 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历

    异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...

  3. .NetCore&Linux&Docker&Portainer踩坑历险记

    最近有一个云服务器和数据库的迁移任务,踩坑爬坑无数次,觉得必须要记录一下.大家瓜子花生准备好,听我慢慢讲故事#手动笑哭#. 故事背景 公司是做电商业务的,在天猫有几家旗舰店数据量也很大.阿里有一个称为 ...

  4. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  5. ABP框架入门踩坑-使用MySQL

    使用MySQL ABP踩坑记录-目录 起因 因为我自用的服务器只是腾讯云1核1G的学生机,不方便装SQL Server,所以转而MySQL. 这里使用的MySQL版本号为 8.0. 解决方案 删除Qi ...

  6. Faster_Rcnn在windows下运行踩坑总结

    Faster_Rcnn在windows下运行踩坑总结  20190524 今天又是元气满满的一天! 1.代码下载 2.编译 3.下载数据集 4.下载pre-train Model 5.运行train ...

  7. Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历

    Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历 https://www.cnblogs.com/shuxiaolong/p/DotNet_Task_BUG.html 异步Task简单 ...

  8. Java踩坑之路

    陆陆续续学Java也快一年多了,从开始的一窍不通到现在的初窥门径,我努力过,迷茫过,痛过,乐过,反思过,沉淀过.趁着新年,我希望能把这些东西记下来,就当是我一路走来的脚印. 一.初识网站应用 记得第一 ...

  9. Go“一个包含nil指针的接口不是nil接口”踩坑

    最近在项目中踩了一个深坑--"Golang中一个包含nil指针的接口不是nil接口",总结下分享出来,如果你不是很理解这句话,那推荐认真看下下面的示例代码,避免以后写代码时踩坑. ...

随机推荐

  1. Mapper映射语句高阶应用——ResultMap

    resultMap 元素是MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果 集中取出数据的 JDBC代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情. ...

  2. HDU 1556 Color the ball - from lanshui_Yang

    Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a ...

  3. [转]fatal error: iostream.h: No such file or directory

    iostream.h是非标准头文件,iostream是标准头文件形式.iostream.h时代没有名词空间,即所有库函数包括头文件iostream.h都声明在全局域.为了体现结构层次,c++标准委员会 ...

  4. php error_log 详解

    定义和用法 error_log() 函数向服务器错误记录.文件或远程目标发送一个错误. 成功,返回 true,否则返回 false. error_log(error,type,destination, ...

  5. django--的第一个项目hello world

    第一步: 用django-admin命令开始一个项目 cd /tmp/ django-admin startproject firstproject tree /tmp/firstproject 第二 ...

  6. js 图片无缝循环

    <html> <head> <title>Js图片无缝滚动</title> <style type="text/css"> ...

  7. jQuery之动画效果

    1.show()显示效果 语法:show(speed,callback) Number/String,Function speend为动画执行时间,单位为毫秒.也可以为slow"," ...

  8. 《Programming WPF》翻译 目录

    原文:<Programming WPF>翻译 目录 注:第1.2章我只做了笔记,没有翻译,请大家阅读时注意. 还有就是,这本书的英文版本下载:[O'Reilly] Programming ...

  9. Android studio修改debug.keystore

    在android studio项目中配置自定义的debug keystore 方法/步骤   在项目的build.gradle中添加如下内容: android {    signingConfigs ...

  10. ZOJ3477&JAVA大数类

    转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...