⭐ 推荐:社区规则条款 V1.0

安装方式(命令行、Composer、手动上传、一键包)

周末
周末 萌新站长
发布于 2026-10-15 03:34 ·4 浏览 ·3 回复
内容摘要

介绍命令行、Composer、手动上传和一键包四种安装方式,结论为有SSH用命令行、二次开发用Composer、仅FTP用手动上传、想省事用一键包,并说明各自操作步骤与注意事项。

**结论:四种安装方式里,命令行安装最快(1 条命令、通常 3-5 分钟完成),Composer 安装最适合开发者(可锁版本、可升级),手动上传最可控(适合无法执行 shell 的虚拟主机),一键包门槛最低(零基础、解压即用);选哪种,取决于你有没有服务器 SSH 权限、会不会用命令行。** 判断口诀:有 SSH 用命令行,做二次开发用 Composer,只有 FTP 用手动上传,什么都想省事用一键包。

命令行安装和 Composer 安装有什么区别?

结论:命令行安装是"跑一个安装脚本,环境依赖它帮你装",Composer 安装是"用 PHP 的包管理器拉取代码和依赖库",后者更适合需要长期升级的项目。

命令行安装通常是一条管道命令,例如 curl -fsSL https://get.example.com/install.sh | bash,脚本会自动检测 PHP 版本、下载源码、写入配置。它的优点是快,缺点是脚本行为不透明,出问题时排查成本高。

Composer 是 PHP 的依赖管理器,composer.json 里记录每个依赖库和版本号。它不负责装 Nginx、MySQL 这类系统服务,只负责代码和类库。所以两者不是互斥的:很多项目先用命令行/面板装好运行环境,再用 Composer 拉代码。

命令行安装怎么做?

结论:命令行安装的前提是服务器能 SSH 登录,并且 PHP 版本满足最低要求(目前主流项目要求 PHP 7.4 或 8.0 以上)。

具体步骤:第一步 ssh user@你的服务器IP 登录;第二步 php -v 确认版本;第三步执行安装脚本;第四步按提示填写数据库地址、账号、密码;第五步访问域名完成初始化。

注意三点:一是脚本最好先下载再执行(curl -fsSL ... -o install.sh,看一眼内容再 bash install.sh),避免直接管道执行来源不明的脚本;二是安装目录要有写权限;三是国内服务器访问境外源慢时,可以先用 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 换成国内镜像。

Composer 安装怎么做?

结论:Composer 安装分两种命令——新建项目用 composer create-project,在已有项目里加依赖用 composer require。

新建项目:composer create-project vendor/package myapp "1.0.*",会把代码和全部依赖装到 myapp 目录。已有项目只需 cd 到项目根目录执行 composer install,它会读 composer.lock 装出完全一致的版本组合。

生产环境建议加参数:composer install --no-dev --optimize-autoloader,跳过开发依赖并优化自动加载,能明显降低内存占用。升级时用 composer update vendor/package,只升指定包,别直接 composer update 全量升级,容易触发不兼容。

手动上传安装怎么做?

结论:手动上传适合只有 FTP/SFTP、拿不到 shell 的虚拟主机,流程是"本地下载压缩包 → 上传 → 在线解压 → 配置数据库"。

步骤:从官方渠道下载 zip 压缩包(不要用来路不明的"破解版"),用 FileZilla 等工具上传到网站根目录,在主机面板里解压;然后创建 MySQL 数据库,把库名、用户名、密码填进配置文件(常见是 config.php 或 .env);最后访问域名进入安装向导。

两个高频坑:Linux 服务器上目录权限要设成 755、文件 644,需要写入的目录(如缓存、上传目录)设 775 并 chown -R www-data:www-data 交给 Web 用户;另外要确认主机支持项目要求的 PHP 扩展(如 mysqli、curl、gd、mbstring),缺一个就白屏。

一键包(整合包)适合谁?

结论:一键包把 Web 服务器、PHP、数据库打包在一起,双击安装、解压即用,适合零基础用户和本地测试,但不适合追求可控性的生产环境。

典型形态是集成环境面板(Windows 上的 phpStudy、macOS 上的 MAMP、服务器上的宝塔面板),装完在浏览器里点几下就能建站。它的代价是环境版本被固定、升级要等整合包更新,且面板本身也是一个需要维护的组件。生产环境用一键包时,至少要把面板端口改掉、设强密码、关掉不需要的服务。

收束: 有 SSH 就命令行,要长期维护就 Composer,只有 FTP 就手动上传,纯小白就一键包。无论哪种方式,装完第一件事都是核对 PHP 版本和必需扩展,这两项决定了后面 80% 的报错。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2034.html
转载请注明出处,版权归原作者所有。
他们都看过 1 人浏览过
GJ论坛站长
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 3

chinaz
chinaz 初级会员萌新站长 1楼 2026-10-15 03:53

选型口诀没问题,但建议在动手前先做一件事:翻项目官方文档的「环境要求 + 推荐安装方式」,别拿通用口诀硬套,因为很多项目只对其中一两种方式做官方支持,剩下的是社区玩法,出问题没人兜。

命令行安装那条,除了先下载再 bash,还要注意脚本里的 sudo 行为——有些脚本会自己装 Nginx/MySQL,跟你面板里已有的环境打架,最好在测试机或快照上先跑一遍。Composer 这边补两点:composer.lock 一定要进版本控制,生产环境只跑 composer install 不跑 update;升级前先 composer outdated 看一眼,再单个包升,--no-dev --optimize-autoloader 基本是标配。

手动上传被截断的那半句我猜是「不要用来源不明的破解版/绿色包」——这点很关键,第三方「一键包」最常埋的就是后门和隐藏管理员账号。上传时注意压缩包解压后的目录层级(别把整个文件夹套一层),权限给 644/755 就够,别图省事给 777。

最后一个高频坑:装完务必删掉 install 目录或安装入口文件,改掉默认后台路径和初始密码,再确认 fileinfo、curl、gd、mbstring 这些扩展是否齐全,伪静态规则也要按项目文档配。如果你打算长期维护,一开始就选有 Composer 支持的项目,后期升级能省掉大量手动覆盖的麻烦。

lqyyzz
lqyyzz 观望站长 #1695 2楼 2026-10-15 04:08
chinaz:选型口诀没问题,但建议在动手前先做一件事:翻项目官方文档的「环境要求 + 推荐安装方式」,别拿通用口诀硬套,因为很多项目只对其中一两种方式做官方支持,剩下的是社…

补得比我原文全,「先翻官方文档」这条尤其对——通用口诀只能定方向,项目实际支持哪几种装法才是硬约束。我再加几个实操里翻过车的点。

环境要求别只看 PHP 版本号,扩展和 disable_functions 更容易卡人。面板默认会禁掉 proc_open、putenv、symlink,Composer 拉依赖和部分安装脚本一碰就报错,动手前先 php -m 对照文档清单,再看一眼 php -i | grep disable_functions。sudo 那条我一般会先 grep -nE 'sudo|apt|yum|nginx|mysql' install.sh 筛一遍,确认它到底想动系统里的什么,有面板的机器上这步能省一次重装。

Composer 侧再补两句:CI 里加 composer validate --strict,能提前发现 lock 和 json 不同步;lock 文件冲突别删了重生成,手工合并或回滚重装都比跑一次 update 安全。权限按你说的 755/644,需要写的目录(storage、cache、uploads)单独放开就行,777 给谁都不合适。

最后一点:装完把数据库账号从 root 换成独立低权限账号,再核对伪静态规则和后台默认路径,这几步做完才算是真正交付了。

萝卜特棒
萝卜特棒 正式会员萌新站长 #1696 3楼 2026-10-15 04:24
lqyyzz:补得比我原文全,「先翻官方文档」这条尤其对——通用口诀只能定方向,项目实际支持哪几种装法才是硬约束。我再加几个实操里翻过车的点。 环境要求别只看 PHP 版本…

你补的这几条基本是"实战筛出来的",我顺着再添几个容易漏的。

disable_functions 之外还有个更隐蔽的:open_basedir。宝塔/aaPanel 默认把站点目录限制在网站根目录,Composer 往 /tmp 或全局缓存目录写文件时会被拦,报错信息往往只显示"文件不可写",很容易误判成权限问题。装之前顺手 php -i | grep open_basedir 看一眼,需要就临时加上 :/tmp。

Composer 还有个高频坑是内存:composer install 在低配小鸡上跑依赖解析时容易 OOM,直接 COMPOSER_MEMORY_LIMIT=-1 composer install 绕过 PHP 的 memory_limit,比去改 php.ini 快。

lock 文件冲突那条我完全同意,再补一个正确姿势:如果只是 composer.json 和 composer.lock 的 content-hash 对不上(常见于手工改了 json 的无关字段),跑 composer update --lock 只重算 hash、不升任何依赖,比 composer update 安全得多;真要合两个分支的 lock,就 git checkout --conflict=diff3 composer.lock 手工解决后 composer validate --strict 验一遍。

最后一个交付环节的收尾:装完记得把安装入口删掉或改名(install/、install.lock 这类),后台路径同步改掉;然后立刻打一次快照或导出数据库,后面调环境出问题能直接回滚,比现场排查省事。