温馨提示×

PHP文件在Ubuntu如何共享

小樊
36
2025-11-14 21:24:20
栏目: 编程语言

在 Ubuntu 上共享 PHP 文件的常用方式

  • 通过 Web 服务器对外发布(最简单、直接)
  • 通过 Samba 在局域网与 Windows/macOS 共享
  • 通过 NFSLinux 服务器/工作站 间共享
  • 通过 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/UDP2049/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)统一所有权,避免写入失败

0