如何部署PHP项目到服务器? | PHP项目上线详细教程
- 云服务器
- 2026-02-13
- 4631
将 PHP 项目发布到服务器的完整流程如下,包含详细步骤和注意事项:
准备工作
-
项目本地测试
- 确保项目在本地开发环境(如 XAMPP/WAMP)正常运行
- 处理所有错误和警告(error_reporting = E_ALL)
- 移除调试代码和测试文件
-
服务器环境检查
# 连接服务器(示例) ssh username@server_ip- 检查 PHP 版本:php -v
- 检查 Web 服务器(Apache/Nginx):apache2 -v 或 nginx -v
- 检查数据库(MySQL/MariaDB):mysql --version
-
环境匹配
- 确保服务器 PHP 版本 ≥ 本地版本
- 确认扩展一致(如 mysqli、pdo、gd、openssl): php -m # 查看已安装扩展
上传项目文件
方法 1:FTP/SFTP(推荐 FileZilla)
- 连接信息:
- 主机:服务器 IP
- 协议:SFTP(端口 22)
- 用户名/密码:SSH 凭据
- 上传路径:通常为 /var/www/html/your_project
方法 2:SCP 命令(Linux/macOS)
scp -r /本地/项目路径 username@server_ip:/var/www/html/your_project
方法 3:Git(需服务器安装 Git)
git clone https://github.com/yourname/project.git /var/www/html/your_project
服务器配置
设置文件权限
cd /var/www/html/your_project # 设置所有者(假设 Web 服务器用户为 www-data) sudo chown -R www-data:www-data . # 目录权限 755,文件权限 644 find . -type d -exec chmod 755 {} ; find . -type f -exec chmod 644 {} ; # 特殊目录(如缓存、上传文件夹) chmod -R 775 storage/ # Laravel 示例 chmod -R 775 uploads/
配置 Web 服务器
Apache 虚拟主机示例(/etc/apache2/sites-available/your_project.conf):
<VirtualHost *:80> ServerName yourdomain.com DocumentRoot /var/www/html/your_project/public # 框架需指向 public 目录 <Directory /var/www/html/your_project/public> Options Indexes FollowSymLinks AllowOverride All # 允许 .htaccess Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
启用配置:
sudo a2ensite your_project.conf sudo systemctl restart apache2
Nginx 配置示例(/etc/nginx/sites-available/your_project):
server { listen 80; server_name yourdomain.com; root /var/www/html/your_project/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 修改为你的 PHP 版本 } }
启用配置:
sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
数据库部署
- 导入数据库: mysql -u root -p db_name < /path/to/local_dump.sql
- 更新配置文件:
- 修改项目中的数据库配置(如 config/database.php、.env) DB_HOST=localhost DB_DATABASE=prod_db DB_USERNAME=prod_user DB_PASSWORD=强密码
环境优化
-
调整 php.ini:

sudo nano /etc/php/8.1/apache2/php.ini # 根据版本修改路径
关键设置:
-
重启服务:
# Apache sudo systemctl restart apache2 # Nginx + PHP-FPM sudo systemctl restart php8.1-fpm nginx -
保护敏感文件:
- 禁止访问 .env、composer.json 等
Apache(.htaccess):
<Files ".env"> Require all denied </Files>
Nginx:
location ~ /.env { deny all; }
- 禁止访问 .env、composer.json 等
-
安装防火墙:
sudo apt install ufw sudo ufw allow http sudo ufw allow https sudo ufw allow ssh sudo ufw enable -
访问测试:
- 浏览器打开 http://server_ip 或域名
- 检查所有功能(表单提交、文件上传、API 等)
-
日志检查:
# Apache tail -f /var/log/apache2/error.log # Nginx tail -f /var/log/nginx/error.log # PHP 错误 tail -f /var/log/php_errors.log -
500 内部错误:
- 检查文件权限
- 查看 Web 服务器错误日志
- 确保 .htaccess 被支持(Apache 需启用 mod_rewrite)
-
数据库连接失败:
- 确认数据库用户远程访问权限: GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
- 检查防火墙是否开放 3306 端口
-
文件权限问题:
- 不要使用 chmod 777!用 sudo chown -R www-data:www-data /path
-
使用 Deployer 自动化部署:
// deploy.php require 'recipe/laravel.php'; set('repository', 'git@github.com:user/project.git'); server('prod', 'server_ip') ->user('deployer') ->identityFile('~/.ssh/id_rsa') ->set('deploy_path', '/var/www/html/project');运行:dep deploy prod
-
配置 HTTPS:
使用 Let’s Encrypt 免费证书:
sudo apt install certbot python3-certbot-apache # Apache sudo certbot --apache -d yourdomain.com
高级部署(可选)
按照以上步骤操作,即可完成 PHP 项目的服务器部署,关键点:权限控制、环境一致性、日志监控。

安全加固
验证与监控
常见问题解决