在 Ubuntu 上共享 PHP 文件的常用方式
- 通过 Web 服务器对外发布(最简单、直接)
- 通过 Samba 在局域网与 Windows/macOS 共享
- 通过 NFS 在 Linux 服务器/工作站 间共享
- 通过 FTP/SFTP 进行文件分发与协作
方式一 通过 Web 服务器对外发布
- 安装组件
- 使用 Apache:sudo apt update && sudo apt install apache2 php libapache2-mod-php
- 使用 Nginx + PHP-FPM:sudo apt update && sudo apt install nginx php-fpm
- 基本配置
- Apache:启用模块与默认站点,将 PHP 文件放入 /var/www/html,访问 http://服务器IP/文件名.php
- Nginx:在站点配置中处理 PHP,示例:
- root /var/www/html; index index.php;
- location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; }(按实际 PHP 版本调整)
- 权限与测试
- 权限:sudo chown -R www-data:www-data /var/www/html;文件 644、目录 755
- 重启服务:sudo systemctl restart apache2 或 sudo systemctl restart nginx
- 防火墙:sudo ufw allow ‘Nginx Full’(如启用 UFW)
- 适用场景:对外提供网站/接口访问,简单可靠,生产最常用
方式二 通过 Samba 在局域网共享
- 安装与基础配置
- 安装:sudo apt install samba
- 编辑 /etc/samba/smb.conf,示例:
- [global] 中设置:workgroup = WORKGROUP;security = user;map to guest = bad user
- 共享段:path = /srv/php;read only = no;browsable = yes;valid users = alice
- 创建共享目录与用户
- sudo mkdir -p /srv/php && sudo chown -R alice:alice /srv/php
- 设置 Samba 用户:sudo smbpasswd -a alice
- 启动与防火墙
- sudo systemctl start smbd && sudo systemctl enable smbd
- UFW:sudo ufw allow samba
- 访问方式
- Windows:\服务器IP\shared
- macOS/Linux:smb://服务器IP/shared
- 适用场景:与 Windows 客户端共享 PHP 源码/资源,便于多人协作编辑
方式三 通过 NFS 在 Linux 间共享
- 服务端
- 安装:sudo apt install nfs-kernel-server
- 配置 /etc/exports:/srv/nfs/php *(rw,sync,no_subtree_check)
- 生效与启动:sudo exportfs -arv && sudo systemctl restart nfs-kernel-server
- 客户端
- 安装:sudo apt install nfs-common
- 挂载:sudo mount -t nfs 服务器IP:/srv/nfs/php /mnt/nfs
- 权限建议
- 建议将共享目录属主设为 www-data(Web 可读):sudo chown -R www-data:www-data /srv/nfs/php
- 适用场景:多台 Linux/容器 之间共享代码或上传目录,性能与一致性较好
方式四 通过 FTP/SFTP 分发 PHP 文件
- FTP(以 vsftpd 为例)
- 安装:sudo apt install vsftpd
- 配置 /etc/vsftpd.conf:local_enable=YES;write_enable=YES(可按需开启匿名或虚拟用户)
- 启动:sudo systemctl start vsftpd && sudo systemctl enable vsftpd
- SFTP(基于 SSH,系统自带)
- 使用系统用户登录:sftp user@服务器IP,上传至 /var/www/html 或其他目录
- 适用场景:传统文件分发、外部协作方交付,或无法部署 Web/NFS/Samba 的环境
安全与排错要点
- 最小权限:Web 目录建议 755/644,属主 www-data;Samba/NFS 共享按需细化到用户/组
- 防火墙与端口
- Web:sudo ufw allow ‘Nginx Full’(80/443)
- Samba:sudo ufw allow samba
- NFS:放行 111/TCP/UDP 与 2049/TCP(以及 rpc.mountd/rpc.statd 动态端口,或固定端口后放行)
- 版本与路径
- PHP-FPM 套接字路径随版本变化(如 php7.4-fpm.sock、php8.1-fpm.sock),配置前用 php -v 与 ls /var/run/php/ 确认
- 日志定位
- Web:/var/log/apache2/error.log 或 /var/log/nginx/error.log
- Samba:/var/log/samba/log.*
- NFS:/var/log/syslog(exportfs -v 可查看导出表)
- 容器与跨主机权限
- 使用 Docker 时,挂载卷的 UID/GID 映射可能导致宿主机与容器内所有者不一致,必要时在容器内显式 chown/chmod,或使用通用低权限账户(如 nobody)统一所有权,避免写入失败