ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

小皮面板搭建PHP本地环境:安装、建站与DVWA实战

小皮面板搭建PHP本地环境:安装、建站与DVWA实战 1. 先想清楚本地 PHP 环境到底有多少种搞法刚入行那会儿我装 PHP 环境的流程是单独下 Apache、单独下 PHP、再单独下 MySQL然后花一整个下午改 httpd.conf、php.ini、my.ini最后卡在某个 DLL 加载失败上报错。后来有人告诉我用集成环境我第一反应是这不就是给新手用的玩具吗。用了几年之后我的看法变了本地开发环境这类东西判断标准只有一条——能不能让你在五分钟内进入写代码的状态。小皮面板它的前身就是大家熟悉的 phpstudy就是在这个标准下胜出的那一类工具。这篇文章我打算把三件事讲透。第一件是安装包括 Windows 图形化安装和 Linux 命令行安装两条路线附带我踩过的端口占用、路径带中文、杀软拦截这些坑第二件是入门使用站点怎么建、数据库怎么连、PHP 版本怎么切、伪静态怎么写第三件是实战验证直接拿 DVWA 这个练手项目把环境从头到尾跑通一遍跑通了才算真的会用。适合谁看如果你是刚接触 PHP 的学生、需要临时搭个测试环境的运维、或者写前端但要做接口联调的开发者这篇基本能覆盖你 90% 的日常需求。如果你已经在用 Docker Compose 编排整套服务那这篇对你的价值主要是知道有这么个东西客户机器上能快速铺开。在动手之前先把选型逻辑说清楚省得你装到一半开始怀疑人生。1.1 本地 PHP 环境的三条主流路线本地跑 PHP 大致就三条路。第一条是手动编译/手动配置优势是你能精确控制每一个编译参数和模块劣势是耗时且容易在 Windows 上翻车Linux 上编译一次 PHP 少说二十分钟起步。第二条是容器化方案写一个 docker-compose.yml 把 nginx、php-fpm、mysql 串起来环境隔离干净团队协作一致性好但它有个隐性成本文件挂载的权限问题、容器内 Xdebug 回连宿主的网络问题以及在 Windows 上文件 IO 性能的损耗都够你调半天。第三条就是集成面板把 Apache/Nginx、MySQL、PHP、FTP、SSL 证书管理这些打包成一个图形界面一键启停。我的实际用法是混着来主力开发用容器但只要涉及快速验证一段 PHP 代码能不能跑、临时给同事演示一个站点、在客户内网机器上没有外网只能离线部署我就开小皮面板。它的定位很清楚——降低环境搭建的边际成本而不是替代生产环境的部署方案。这个认知很重要很多人对集成环境失望是因为拿它当生产服务器用那是用错场景了。1.2 小皮面板解决的核心痛点和我认为的边界它最值钱的功能其实是三个。一是多版本共存与秒级切换同一台机器上装 PHP 5.6、7.4、8.1 三个版本不同站点绑不同版本切换只改一个下拉框老项目和新项目可以同时跑。二是站点管理图形化创建站点等于自动帮你写好虚拟主机配置、创建好目录、绑定好本地域名省掉手写 vhost 的过程。三是数据库和面板的一体化管理MySQL 启停、改密码、导入导出、开远程访问权限全在界面上点点点。边界也得说清楚。它默认的配置是为了跑起来而不是跑得快也不出事比如 MySQL 的默认参数偏保守、部分安全配置偏宽松远程 root 访问、弱密码这些放在本机自娱自乐没问题一旦你把端口映射到公网那就是给自己埋雷。所以我在下面会专门讲一节本地环境的安全底线这不是唱高调是真的有人的测试机被拿去跑挖矿了。1.3 Windows 版和 Linux 版我该怎么选同样的名字两个版本的体验差别不小。Windows 版是图形界面双击安装包下一步下一步就完事适合桌面开发、教学演示、需要频繁切换 PHP 版本的场景。它的安装目录默认在D:\phpstudy_pro或者C:\phpstudy_pro全部文件都在这个目录下绿色环保卸载基本等于删文件夹注册表里还留一点东西无伤大雅。Linux 版是命令行安装 浏览器访问的 Web 面板安装脚本执行完之后通过http://服务器IP:面板端口登录管理。它更适合放在测试服务器、虚拟机里跑或者你本机装了个 Ubuntu 想体验一下接近生产的部署方式。Linux 版对系统的干净程度有要求如果机器上已经装了 Nginx、MySQL、PHP安装过程大概率会冲突官方文档一般也是建议新装系统上跑。有个细节值得提前说Linux 版安装脚本执行完终端会直接打印面板地址和初始账号密码务必当场复制下来找不回来就得去配置文件里翻那个文件路径挺深的。2. 安装全流程从下载到第一次启动这一节是纯操作我把 Windows 和 Linux 两条路都走一遍。你按自己的系统挑一条看就行。2.1 下载渠道与安装包的正确姿势下载渠道只有一个原则去官网xp.cn下别去各种软件下载站。我在实际工作中见过好几次从第三方站点下的安装包装完浏览器主页被改了不说面板目录里还被塞了额外的可执行文件。判断方法很简单看安装包的数字签名和文件大小官方包一般两百兆上下因为内含多个版本的 MySQL 和 PHP那些只有十几兆的精简版基本都是被二次打包过的。Windows 版下载的是一个 exe 安装程序。下载完成后建议先右键看一下属性里的数字签名页签签名正常的话就可以放心装。Linux 版是通过一条安装脚本命令在线拉取命令以官网当前提供的为准因为它会随版本更新你直接在官网首页复制粘贴就行别用搜索引擎里那篇三年前的文章里的命令那个版本拉下来的可能是已经被废弃的旧包。注意如果你在公司内网或者没有外网的环境Linux 版的在线安装脚本是跑不通的。这种情况提前跟网络管理员申请放行或者改用 Windows 版把整个安装目录拷过去实测下来大部分场景是可用的。2.2 Windows 下的安装步骤与几个必须改的选项双击安装包第一屏是用户协议同意之后进入路径选择。这里有个硬性要求安装路径绝对不能包含中文、空格和特殊符号。原因不难理解Apache 和 MySQL 的配置文件里路径是以字符串形式拼接的中文路径在某些编码下会被解析成乱码导致服务启动时报找不到文件。我推荐直接用D:\phpstudy_pro盘符选非系统盘后面你暴力删库重装的时候心理负担小一点。路径选完之后会问你是否创建桌面快捷方式勾上。点安装进度条大概走一到两分钟取决于是不是固态硬盘。安装过程中杀毒软件有可能会弹窗拦截因为面板需要往系统里写服务、改 hosts 文件、监听端口这些行为在杀软眼里和恶意软件的开机自启很像。这时候别直接点阻止选允许本次操作或者把安装目录加进白名单否则装完你会发现服务起不来还得回头排查。安装完成的最后一步安装程序通常会问你要不要立即启动面板勾上点完成。注意这时候面板只是启动了主程序服务还没启动你还得在面板界面里点那个一键启动按钮。2.3 首次启动与端口占用80 端口被抢怎么办点一键启动之后观察左侧的 Apache/Nginx、MySQL、FTP 三个指示灯正常应该全部变绿。如果 Apache 或 Nginx 显示红色或者启动后立刻停止八成是80 端口被占了。谁占的Windows 上最常见的几个嫌疑人IIS万恶之源、Skype历史上它会占用 80 和 443、迅雷、某些国产安全软件的本地服务还有一些开发工具自带的小型 Web 服务。排查方法很简单用管理员身份打开命令提示符执行netstat -ano | findstr :80输出里最后一列是进程 PID拿到 PID 之后执行tasklist | findstr 进程PID就能看到是哪个程序在占用。确认之后要么去把这个程序的服务停掉比如 IIS 的话在服务里把 World Wide Web Publishing Service 设为手动并停止要么更省事——直接改小皮面板的端口。在面板的设置里把 Apache/Nginx 的监听端口从 80 改成 8080 或者 8000重启服务即可。改完之后站点访问地址就变成http://localhost:8080。MySQL 的 3306 端口同理如果你机器上装过独立版 MySQL 或者装了 Docker 跑过 MySQL 容器3306 会被占用。这种情况我一般直接把集成环境的 MySQL 端口改成 3307省得动已经跑着的那个。2.4 Linux 版的命令行安装与面板初始化Linux 版的流程是脚本安装 Web 面板管理。你在一台干净的机器物理机、虚拟机、云主机都行上用 root 或者 sudo 权限执行官方给的那条安装脚本命令。脚本执行过程中会做几件事检查系统版本是否在支持列表内、安装依赖包、下载并解压运行环境、注册系统服务、启动面板守护进程。整个过程大概三到十分钟取决于网速。执行完之后终端会输出一段信息包含面板访问地址、初始用户名和初始密码。面板地址形如http://你的IP:面板端口Linux 版默认面板端口和 Web 服务端口是分开的别搞混了——面板端口用来管理Web 端口默认 80用来访问你部署的站点。第一次登录进去系统会强制你改一次密码改完记得存进密码管理器这玩意儿改起来不难忘了就得进服务器翻配置文件。面板里能看到和 Windows 版几乎一样的功能网站管理、数据库管理、FTP 管理、文件管理、监控、安全设置。Linux 版额外有个系统设置板块可以改面板端口、绑定域名访问面板、设置 IP 白名单。这里强烈建议把面板的 IP 白名单打开只允许你自己的办公 IP 访问面板原因后面安全那节会讲。如果不小心把面板密码忘了处理方式是在服务器上执行面板自带的命令行工具重置密码具体命令在各个版本的文档里能查到它一般位于安装目录的bin或者scripts下面。我一般会在装完之后立刻把安装目录路径和重置命令记到自己的运维笔记里避免出问题时手忙脚乱。3. 入门使用建站、连库、切版本环境装好了接下来就是日常最常做的三件事。我把它们按你需要理解的最小知识量排列每件事都给出界面操作和对应的底层配置这样你既会用也知道它背地里干了什么。3.1 创建第一个站点三分钟跑起一个 PHP 页面进面板点左侧网站再点创建网站。弹出的表单里有几个字段需要你填域名本地开发随便填比如test.local。面板会自动往系统 hosts 文件里加一条127.0.0.1 test.local的记录这就是为什么你不需要额外配 DNS 也能用域名访问。根目录站点代码放在哪。默认会在WWW目录下用域名建一个文件夹比如WWW\test.local。PHP 版本下拉选装了几个版本就列几个。端口默认 80如果之前改过端口这里要跟着改。点确认面板会在后台做三件事创建目录、写入一份虚拟主机配置、重载 Web 服务。整个过程一两秒。这时候你在站点根目录里扔一个index.php?php echo phpversion(); echo br; echo 小皮面板站点跑通了;浏览器访问http://test.local如果能看到 PHP 版本号和这行文字说明整条链路Web 服务器 → PHP 解析器 → 文件系统是通的。提示如果访问出现 403 Forbidden先检查目录下有没有默认首页文件如果出现 404检查根目录路径填对没有如果直接下载了 php 文件而不是执行它说明 Web 服务器没把请求交给 PHP 处理通常是 PHP 版本被你停掉了。3.2 数据库的创建与连接别再用 root 跑业务点左侧数据库点创建数据库。填数据库名、用户名、密码。这里有个我非常建议养成的习惯不要用 root 账号去连你自己的项目。虽然本地环境风险不大但你在本地写的连接配置如果直接用 root将来上生产的时候很容易顺手把这份配置复制过去。养成一个项目一个库一个专用账号的习惯成本几乎为零。创建完之后面板会告诉你数据库名、用户名、密码、端口。连接方式有三种第一种是命令行在面板的数据库页面通常有个管理或者终端入口也可以自己在本机终端里执行mysql -h 127.0.0.1 -P 3306 -u 你的用户名 -p第二种是图形化客户端Navicat、DBeaver、HeidiSQL 这些都行。新建连接时主机填127.0.0.1端口填面板里显示的那个注意如果你改过 MySQL 端口这里要跟着改用户名密码填刚才创建的。Navicat 记得用正规授权版本网上那些来路不明的特别版本安装包风险极高我见过装完之后机器上多出一堆后台进程的案例不值得为省这点钱冒险。第三种是phpMyAdmin面板一般会带一个点管理按钮就能打开网页版的数据库管理界面。它适合做导入导出、看表结构这类轻量操作处理大数据量导入容易超时那时候还是用命令行最稳mysql -u 用户名 -p 数据库名 backup.sql3.3 多 PHP 版本共存与切换的那些坑小皮面板支持同时安装并运行多个 PHP 版本这个功能的实现原理是每个版本在面板目录下有自己的独立文件夹各自带一份php.ini和扩展目录Web 服务器根据站点的配置决定把请求转发给哪个版本的 FastCGI 进程。所以你切版本的时候其实是改了一行配置并重载服务而不是重新安装。切换路径有两处。站点级别在网站列表里点某个站点的设置找到 PHP 版本下拉框改完保存只影响这个站点。全局级别在软件管理或者首页的 PHP 版本切换处改的是默认版本和命令行环境的版本。这里有几个坑必须提醒。第一扩展是跟着版本走的。你在 PHP 7.4 里开启了fileinfo扩展切到 8.1 之后这个扩展可能是关闭状态得重新在 8.1 的配置里开一遍。表现就是原本正常的代码突然报Call to undefined function。第二php.ini也是各自独立的你改过一处配置别以为切版本之后还会生效。第三命令行里的 php 版本和 Web 的 php 版本是两回事。你在终端敲php -v看到的是命令行版本用 Composer 装依赖时用的是这个版本它可能和你站点跑的版本不一致导致本地跑得好好的部署上去报语法错误。这种问题的排查方法就是在项目里执行php -v确认一下不一致的话去面板里把命令行版本也切过去。3.4 伪静态、HTTPS 与本地域名解析伪静态是入门之后很快会遇到的东西。所谓伪静态就是把index.php?carticleid1这种带参数的地址伪装成article/1.html这种看起来像静态页的地址。它靠的是 Web 服务器的 URL 重写规则。面板的站点设置里有个伪静态输入框选定框架类型比如 thinkphp、laravel之后会自动填入规则也可以手写。以 Nginx 为例一段最基础的规则长这样location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s$1 last; } }它的意思翻译成人话是如果请求的文件在磁盘上真实存在就直接返回不存在就把整个路径塞给index.php去处理。所以你在写规则时一定要保留真实文件直接返回这一条否则 CSS、JS、图片这些静态资源全都会被丢给 PHP 处理性能会莫名其妙地变差。HTTPS 方面面板支持一键生成自签名证书用于本地调试。浏览器会报不安全警告点高级继续访问就行。如果你只是想测试代码在 HTTPS 下的行为比如 Cookie 的 Secure 属性、混合内容拦截自签名证书完全够用不需要去买真证书。本地域名解析除了面板自动写 hosts你也可以手动改。Windows 的路径是C:\Windows\System32\drivers\etc\hostsLinux 是/etc/hosts。格式是IP 域名一行一条。改完 Windows 上需要刷新 DNS 缓存ipconfig /flushdns改 hosts 的一个常见用途是把某个线上域名临时指向本地用来复现线上环境下的问题。用完记得删掉不然过几天你会忘记这件事然后对着本地代码怀疑为什么线上数据变了。4. 拿 DVWA 做一次完整实战验证环境会用了不代表环境是好的。我习惯用 DVWA 这个项目做一次完整验证因为它对环境的依赖比较全面需要 PHP 的特定扩展、需要 MySQL、需要目录可写、需要伪静态配合、需要 session 正常。跑通了它说明你的环境基本没什么短板。注意DVWA 是一个刻意设计成有安全缺陷的演练平台只能部署在本地隔离环境或离线的实验网络中用于学习安全原理和防御思路绝对不要放到能被公网访问的服务器上。这一点是使用它的前提。4.1 部署流程拆解第一步获取源码。从项目的代码托管页面下载压缩包解压后得到一个dvwa-master目录。把它整个复制到你的站点根目录下或者干脆新建一个站点根目录指向这个文件夹。我习惯新建站点域名用dvwa.local这样和其他项目隔离开。第二步处理配置文件。目录里有个config文件夹里面有一个带.dist后缀的示例配置文件。把它复制一份去掉.dist后缀然后用编辑器打开找到数据库那几行$_DVWA[ db_server ] 127.0.0.1; $_DVWA[ db_database ] dvwa; $_DVWA[ db_user ] dvwa_user; $_DVWA[ db_password ] 你在面板里设的密码; $_DVWA[ db_port ] 3306;把这几项换成你在面板里创建的数据库信息。注意端口别填错如果你之前改过 MySQL 端口这里必须一致。第三步去面板创建一个对应的数据库和用户字符集选utf8mb4。第四步浏览器访问http://dvwa.local/setup.php页面上会列出所有需要的 PHP 扩展和配置项绿色表示满足红色表示不满足。常见红色项和解决办法allow_url_fopen和allow_url_include需要在对应 PHP 版本的php.ini里打开fileinfo、gd、mysqli扩展需要在面板的PHP 扩展里勾选然后重启服务某些版本还会检查php_version是否在支持范围内太新的 PHP 版本可能不被老版 DVWA 支持这时候把站点 PHP 版本切到 7.4 或者 8.0 通常就绿了。全部绿色之后点页面底部的Create / Reset Database按钮它会自动建表并写入初始数据。完成后页面会跳转到登录页。4.2 初始化之后的验证清单登录页默认账号是admin密码是password。登进去之后我一般会做这几项检查确认环境真的没问题页面能正常切主题、能提交表单说明 session 和 POST 请求链路正常。侧边栏能正常跳转说明伪静态和 URL 重写正常。数据库面板里能看到 DVWA 自动创建的表说明数据库写入正常。上传一个文件如果有上传相关模块说明目录权限正常。如果登录后一直跳回登录页八成是 session 目录不可写或者 Cookie 域名配置有问题。session 目录一般在 PHP 安装目录的temp或tmp下检查这个目录有没有写权限。这个坑我在 Linux 环境下遇到过好几次本质原因是面板进程和 Web 服务进程的运行用户不一致。5. 我踩过的坑常见问题与排查实录这一节是这篇内容里最值钱的部分因为下面这些问题官方文档里基本不会写但每一个我都真实遇到过。5.1 服务启动失败的三类原因第一类是端口冲突前面讲过用netstat查。第二类是运行库缺失这在 Windows 上很常见。表现是点启动之后服务瞬间变红日志里提示缺少某个VCRUNTIME或者MSVCP开头的 DLL。解决办法是装一遍微软的 VC 运行库合集注意要装对应架构的32 位和 64 位都要因为面板里的不同组件可能是不同位数编译的。第三类是配置文件残留。如果你之前手动改过php.ini或者my.ini写了错误的参数服务会直接起不来。排查方法是看日志——面板通常有日志入口或者直接去安装目录的logs文件夹下翻最近的错误日志。日志里一般会明确告诉你哪一行配置有问题。我遇到过一次是在php.ini里开了个不存在的扩展服务每次启动都失败把那一行注释掉就好了。5.2$_SERVER[REQUEST_URI]为空是怎么回事这个问题在搜索引擎上被问得特别多我自己也踩过一次。现象是代码里明明写了$_SERVER[REQUEST_URI]结果var_dump出来是空的或者报未定义索引但同一份代码在别的环境跑得好好的。根本原因多半出在Nginx 的 FastCGI 参数传递不全。Nginx 和 PHP-FPM 之间是通过 FastCGI 协议通信的Nginx 要把 HTTP 请求的各种信息翻译成 FastCGI 参数传给 PHPPHP 再把这些参数整理进$_SERVER数组。如果 Nginx 配置里引用的fastcgi_params文件没有包含REQUEST_URI这一行PHP 那边自然就拿不到。打开你的站点配置文件找到类似这几行include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;然后在它下面补一行fastcgi_param REQUEST_URI $request_uri;保存重载 Nginx问题就没了。如果你用的是整包替换式的配置面板自带的站点模板也可以直接去修改面板目录下nginx/conf里的fastcgi_params文件在末尾加上这一行这样所有站点都能生效。还有一种相对冷门的原因是用了pathinfo模式的伪静态规则把原始 URI 截断了。这种情况排查方法是在 PHP 里同时打印$_SERVER里的REQUEST_URI、QUERY_STRING、PATH_INFO三个值对比一下哪个是有内容的就能判断出是参数没传还是被重写规则吃掉了。这类问题的通用排查思路就是把中间层的数据都打印出来别靠猜。5.3 数据库连不上的排查顺序数据库连接报错的信息通常很笼统比如无法连接或者Access denied。我总结了一套固定顺序按这个顺序查基本三次以内能定位先确认服务在不在跑面板灯是不是绿的再确认端口对不对如果你改过端口代码里的配置改了吗再确认用户名密码对不对注意大小写MySQL 的用户名是区分大小写的密码在某些认证插件下也区分再确认这个用户有没有从这个 IP 连接的权限MySQL 的用户是用户名主机的形式dvwa_userlocalhost和dvwa_user127.0.0.1在 MySQL 眼里是两个不同的账号这一点非常容易踩坑最后确认目标库存不存在。其中最容易忽略的是第四条。localhost 在 MySQL 里走的是 Unix socketLinux或者命名管道Windows而 127.0.0.1 走的是 TCP两条路径对应的权限记录可能完全不同。如果你的代码里写localhost连不上、改成127.0.0.1就好了原因就在这里。5.4 常见问题速查表现象大概率原因处理办法Web 服务启动后立即停止80 端口被占用改端口或停掉占用程序服务启动报缺少 DLLVC 运行库缺失安装 VC 运行库合集32/64 位访问站点 403目录无默认首页或无读权限放一个 index.php检查目录权限访问返回源码不执行PHP 未启动或未绑定启动对应 PHP检查站点版本设置代码报未定义函数对应扩展未开启面板里勾选扩展并重启服务REQUEST_URI为空Nginx 未传递该参数配置里补fastcgi_param REQUEST_URI数据库 Access denied用户主机不匹配用127.0.0.1替代localhost试端口改了但访问不了防火墙未放行放行新端口或关闭本机防火墙测试切 PHP 版本后报错扩展和配置未同步在新版本里重新开启扩展命令行与站点版本不一致命令行 PHP 版本独立在面板里同步切换命令行版本提示这张表建议直接截图存手机里。环境类问题 90% 都跑不出这个范围剩下的 10% 去看日志日志比任何人的经验都准。6. 配套工具与环境安全的几条实在建议环境跑起来只是开始日常开发还有一堆配套的东西要装。这一节我聊几个和 PHP 环境强相关的以及几条我认为必须说的安全底线。6.1 周边工具的搭配思路数据库客户端DBeaver 免费且跨平台Navicat 界面顺手但需要正版授权HeidiSQL 轻量适合 Windows。三个我都用过日常用哪个取决于你手上的授权情况功能上差异不大。建议不要在客户端里保存生产环境的密码尤其是共享电脑上。代码编辑器VS Code 配 PHP 插件够用了需要断点调试就上 Xdebug。Xdebug 的配置在小皮面板里有个开关打开之后要在php.ini里补上端口和模式配置然后在编辑器里监听同一个端口。这个配置我调过好几次才通关键点是端口三处必须一致php.ini 里的xdebug.client_port、编辑器里的监听端口、以及如果有防火墙的话放行的端口。任何一处不一致表现都是能断点但连不上。版本控制Git 装完之后建议立刻配好用户名和邮箱很多人是提交了才发现 commit 记录里是一串默认乱码。配置命令就两行一次配好终身受用git config --global user.name 你的名字 git config --global user.email 你的邮箱依赖管理Composer 是 PHP 生态绕不开的。装完之后建议把国内镜像配一下否则拉包速度会让你怀疑人生。配置命令是composer config -g repo.packagist composer 镜像地址具体地址用官方推荐的当前可用镜像。配完之后可以用composer diagnose检查一下连通性。如果你的项目里还要跑前端构建Node.js 也是需要的装完之后记得配 npm 的镜像源。这几个工具之间没有强依赖关系可以按需装先把 PHP 和数据库跑通再装其他的一次装太多容易搞不清楚是谁的问题。6.2 本地环境的安全底线这一段我必须单独拎出来讲因为集成面板的默认配置为了好用在安全上是做了让步的。四条建议都是成本极低但收益很高的第一条不要用 root 或者弱密码。面板的默认数据库账号密码在很多教程里是root/root谁都知道。本地无所谓但如果你把面板装在了云服务器上这就是敞开的门。第二条不要把面板端口和数据库端口直接暴露到公网。Linux 版的面板本身有 IP 白名单功能一定打开。数据库端口在安全组里也不要放行需要远程连的时候走 SSH 隧道多一步操作换来的是安心。第三条别在联网的机器上随意跑来路不明的漏洞演练程序。前面 DVWA 那段我强调过这类程序本身就是为了展示攻击手法存在的它们的设计目标不是安全。放在断网的实验环境里学习是最稳妥的做法。第四条定期清理测试站点和数据库。我见过有人的测试机上堆了三四十个站点很多是某个项目临时建的结果某个站点里留着数据库导出文件、日志文件里面的信息比他自己记得的多得多。养成习惯项目结束就删站点需要的时候重建也就一分钟。6.3 从本地到线上中间还差什么最后说一个认知上的事。用集成面板把站点跑起来和把站点部署到线上中间差的不是一点点。本地环境的配置是为了方便你改线上环境的配置是为了不出事两者的优化方向是相反的。本地开着详细错误输出、关闭缓存、允许目录列表线上必须关掉错误输出、打开缓存、禁止目录列表。所以在本地环境把功能调通之后上线的第一件事是把开发阶段的宽松配置逐条收紧并把这份差异整理成一份清单。我自己的做法是维护一个dev.ini和prod.ini的对照表每次部署前对着过一遍这个习惯帮我省下过好几次因为display_errors忘记关而导致路径信息泄露的事故。我个人在小皮面板上最深的体会是它最大的价值不是免费而是把环境的搭建成本压到了几乎为零让你可以在一个新机器上五分钟内进入写代码的状态。这种能力在你需要频繁更换开发机、给同事演示、或者临时处理一个紧急问题的时候价值特别明显。至于它默认配置的那些宽松之处知道在哪改、改哪几项就够了这本来就是使用者该负的责任。
返回列表