在 Ubuntu + ThinkPHP 环境下,权限设置主要围绕 目录可写性、Web 用户归属、安全策略 来做。下面按常见场景说明。
Ubuntu 常见 Web 服务:
www-datawww-data查看当前 PHP 运行用户:
ps aux | grep php-fpm
或
ps aux | grep apache
ThinkPHP(以 6.x / 8.x 为例)需要写权限的目录:
runtime/
public/uploads/ (如果你有上传)
storage/ (某些版本)
sudo chown -R www-data:www-data /var/www/your_project
sudo chmod -R 755 /var/www/your_project
sudo chmod -R 775 runtime
sudo chmod -R 775 public/uploads
775比777安全,避免被其他用户篡改
cd /var/www/your_project
# 修改所有者为 web 用户
sudo chown -R www-data:www-data .
# 目录权限
find . -type d -exec chmod 755 {} \;
# 文件权限
find . -type f -exec chmod 644 {} \;
# 可写目录单独处理
chmod -R 775 runtime
chmod -R 775 public/uploads
你自己是 ubuntu 用户,Web 是 www-data,可以加到同一组:
sudo usermod -aG www-data ubuntu
sudo chown -R www-data:www-data /var/www/your_project
sudo chmod -R 775 runtime
重新登录后生效。
如果用了 .htaccess:
sudo a2enmod rewrite
sudo service apache2 restart
并确认:
AllowOverride All
Nginx 本身不执行 PHP,需确认:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
并且 php-fpm 用户是 www-data
chmod -R 777(极不安全)config、.env 设为可写/home/ubuntu 下直接用sudo tail -f /var/log/apache2/error.log
# 或
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/www/your_project/runtime/log/*
如果你告诉我:
我可以直接给你精确命令。