Ubuntu 上解决 ThinkPHP 权限问题的实用方案
一 核心思路
ps -ef | grep -E 'apache|nginx|php-fpm')。chmod 777 -R,这会破坏最小权限原则并带来严重安全风险。二 标准操作步骤
ps -ef | grep apache 或 ps aux | grep www-dataps -ef | grep php-fpm 或 ps aux | grep www-datasudo chown -R ubuntu:www-data /var/www/your-tpsudo usermod -a -G www-data ubuntu(加入后需重新登录或 newgrp www-data 生效)find /var/www/your-tp -type d -exec chmod 750 {} \;find /var/www/your-tp -not -type d -exec chmod 640 {} \;sudo chgrp -R www-data /var/www/your-tp/runtimesudo chmod -R ug+rwx /var/www/your-tp/runtimesudo chgrp -R www-data /var/www/your-tp/Application/Runtimesudo chmod -R ug+rwx /var/www/your-tp/Application/Runtimesudo chgrp -R www-data /var/www/your-tp/public/uploadssudo chmod -R 775 /var/www/your-tp/public/uploadsRewriteEngine OnRewriteRule ^(uploads|assets)/.*\.(php|php5|jsp)$ - [F,L]location ~ ^/(uploads|assets)/.*\.(php|php5|jsp)$ { deny all; }DocumentRoot /var/www/your-tp/public<Directory /var/www/your-tp/public> ... AllowOverride All ... Require all granted </Directory>sudo a2enmod rewrite && sudo systemctl restart apache2root /var/www/your-tp/public;try_files $uri $uri/ /index.php?$query_string;sudo nginx -t && sudo systemctl reload nginxphp think 等命令,可临时将当前用户加入 www-data 组:sudo usermod -a -G www-data $USER,避免“无权限创建/写入”的问题。三 常见症状与快速修复
php think 报无权限:将部署用户加入 www-data 组(第 2 步),或临时使用 sudo -u www-data php think ...(不建议长期使用 sudo 运行业务命令)。四 安全加固清单