好吧,那我来回忆一下我的经历。
我好像从来就没专门学过 PHP ,初中高中的时候论坛火热,还有类似“论群”一类的公共论坛可以自己注册二级域名。我就想自己搞一个。
我不喜欢一键安装包之类的东西,所以就走上了一条邪路。在 Windows 机器上配置环境。 当时的情况是什么都不懂, Apache 配置文件, php.ini 都完全不懂。真的是瞎猫碰死耗子,浪费了不少假期的时间让这些组件能正常运行。另外还有别的事情,当时手里有两个路由器,希望两个路由器下面的机器能相互连通(并不想牺牲任何一台路由器的路由功能,所以 LAN-LAN 通过网线连接的方案不考虑)。这个路由器互联的问题荒废了我整个十一长假。上网查资料(百度知道这一类的,回答者都自以为是的告诉我不可行。)后来可能是看到了 CSDN 上的文章,没读懂,看了好几遍,琢磨出来应该用静态路由表实现。然后就那么解决了。
我在上大二之前是看不懂 HTML 和 CSS 的,直到在学校选了一节网页编程,一个学期, HTML , CSS , JS , PHP , SQL 就都懂了,不懂的也完全知道该去哪里查。在写作业的时候,或者自己写点什么小项目的时候,会遇到很多没见过的问题,这些诡异的问题真是书本上学不到的。
*** 所以学习网页编程(当然包括 PHP )的第一点是, [多写代码] ***
多写代码,并不是用你已经完全掌握的知识,去重复创造不同的作品。 (比如:能熟练对数据库查删增改,然后围绕这个写了各种项目,这个就很没营养)
而是,提出自己想解决的问题,通过自己的编程能力,拆分成一步一步的小步骤,里面可能有你熟悉的,也可能有你陌生的,甚至你并不确信你所学的语言是否真能解决这个问题。去研究,尝试解决的过程,往往是最宝贵的经验。
继续我的故事,后来我用 Discuz 搞了个论坛,心里(闲的)较着劲儿和别的社团网页比加载速度。在这个过程中接触学习了 web 缓存, mod_pagespeed(这货和 Discuz 极其不友好), CDN , geoDNS 。 论坛得发邮件吧? sendmail , SPF 这些东西也会有所了解。
后来对安全也比较感兴趣,倒腾 https ,去 SSLLabs 测试提高网站的安全评分,挨个查每一项都具体是啥东西,还接触了 CSP , CORS 。再后来发现 Chrome 的 net-internals 里面有个 HSTS,顺便就谷歌了解了一下它外加 HPKP 。最重要的是这些东西一定要亲自试一试。举例:
HPKP:
https://developer.mozilla.org/en-US/docs/Web/Security/Public_Key_Pinning 我按照这个一步一步做,最后却发现浏览器并不认。。。 看这句话: HPKP has the potential to lock out users for a long time if used incorrectly! The use of backup certificates and/or pinning the CA certificate is recommend. 说的是 recommended ,结果如果只写了一个 pin-sha256 的话,浏览器根本不认。。。这些都是赤裸裸的坑。。。
*** 所以第二个建议是,保持好奇,多学习多了解多尝试新规则和新技术。万万不要觉得“能用就行”就可以了,要不断探索,不断优化完善。***
再举个例子, UNIX 文件权限,文件夹的执行权限指的是什么? php 网页程序代码文件需不需要执行权限?粘滞位是啥?这些问题都可以是一个 403 错误引申到的。当然有些人直接把权限改成 777 也能解决问题,说不定还比你提前解决呢。 :)
电脑相关的东西更新换代很快,如果哪个公司还继续用着 PHP5.2/5.3 ,赶紧跑。 FTP 作为文件下载服务是没什么大问题的,但是用 FTP 传输敏感文件,在注重信息安全的当今是不被接受的。
至于我的那个论坛,可想而知,在我这么隔三差五的折腾下,默默关了。
我不想继续写了,都快成小说了。