|
PHP网站跑起来,站教其实只需要三样东西:一个能解析PHP的站教服务器、一个存数据的站教MySQL、再加上你写的站教代码。很多人卡在第一步——环境搭不起来。站教Windows下用XAMPP,站教Mac用MAMP,站教Linux直接apt install php mysql-server。站教装完之后浏览器输入localhost,站教看到那个橙色欢迎页,站教说明PHP已经能跑了。站教 我见过太多新手在这一步就放弃。站教其实问题往往出在端口占用。站教Apache默认监听80端口,站教如果装了IIS或者Skype,站教冲突是必然的。改httpd.conf里的Listen 8080,重启服务,问题解决。这种小坑没人提前告诉你,但踩过一次就记住了。 从一行代码到一个页面 建一个test.php,写hello,扔到htdocs目录。浏览器访问localhost/test.php,屏幕上出现hello。就这么简单。PHP的魅力在于它不需要编译,改完刷新就能看到效果。这种即时反馈对初学者特别友好。 但真正的网站不可能只有一行echo。你得把HTML和PHP混着写。比如一个简单的留言板,表单提交到process.php,PHP接收$_POST数据,连接MySQL,插入记录。代码大概长这样: $conn = new mysqli('localhost', 'root', '', 'test'); $stmt = $conn->prepare("INSERT INTO messages (content) VALUES (?)"); $stmt->bind_param("s", $_POST['content']); $stmt->execute(); 注意这里用了预处理语句。新手教程经常直接拼SQL字符串,那是在教人写漏洞。我坚持认为,从第一天就该用prepare。虽然多写两行,但避免了SQL注入这个坑。 模板分离这件事 把PHP逻辑和HTML展示混在一起,项目一大就乱。我习惯用简单的模板方法:所有页面先写逻辑,最后include一个header.php和footer.php。不用框架也能保持整洁。比如index.php顶部处理数据查询,中间HTML里用foreach循环输出,底部统一收尾。 有人问要不要上Laravel。我的看法是:先手写一个完整的留言板,再考虑框架。否则你连路由和中间件在解决什么问题都体会不到。手写过程中遇到的重复代码、命名混乱、安全问题,正是框架存在的理由。 调试比写代码更重要 PHP报错默认只显示500错误,白屏一片。开发环境记得开display_errors。在php.ini里把display_errors改成On,error_reporting设为E_ALL。这样语法错误、未定义变量都会直接告诉你行号。生产环境再关掉,避免泄露路径信息。 还有个土办法:在可疑位置写var_dump($var); die; 看变量到底长什么样。比猜来猜去快得多。我到现在偶尔还用这招,特别是处理数组嵌套的时候。 部署时的小细节 本地跑通不代表线上能用。文件权限、目录大小写、PHP版本差异,每个都可能让你排查半天。Linux服务器对大小写敏感,Index.php和index.php是两个文件。上传前统一改成小写,省得半夜被叫起来修bug。 数据库连接信息别硬编码在代码里。建个config.php,用define定义常量,然后.gitignore掉。虽然小项目无所谓,但养成习惯没坏处。哪天代码传到GitHub,至少密码不会跟着跑出去。 PHP网站开发没有捷径。看一百篇教程不如自己动手写一个能用的东西。从留言板开始,加个用户登录,再做分页和搜索。每加一个功能,你会遇到新问题,解决它,就进步了。那些文档和手册,是遇到具体困难时再去查的工具,不是从头读到尾的教科书。 |