Ubuntu系统中,Apache/Nginx的默认运行用户为www-data(可通过ps -ef | grep apache或ps -ef | grep nginx验证)。ThinkPHP运行时需确保Web服务器对该项目目录有足够的权限。
将ThinkPHP项目目录的所有者设为www-data,所属组也设为www-data(替换/path/to/your_project为实际项目路径):
sudo chown -R www-data:www-data /path/to/your_project
此命令将项目下所有文件和目录的所有者改为www-data,组改为www-data,确保Web服务器有权访问。
755(所有者可读写执行,组和其他用户可读执行),避免过度开放权限:sudo chmod -R 755 /path/to/your_project
770(所有者与组可读写执行,其他用户无权限):sudo find /path/to/your_project -type d -name "runtime" -exec chmod -R 770 {} \;
该命令仅修改runtime目录及其子目录的权限,确保ThinkPHP可自动生成缓存、日志文件。644(所有者可读写,组和其他用户可读),防止文件被意外修改:sudo find /path/to/your_project -type f -not -name "*.php" -exec chmod 644 {} \;
644即可(无需额外修改),确保Web服务器可读取但不修改源码。sudo systemctl restart apache2 # 若使用Apache
sudo systemctl restart nginx # 若使用Nginx
mkdir(): Permission denied等权限错误。若仍有问题,可临时将runtime目录权限设为777(测试用,上线前需改回770)定位具体目录。777:不要直接对整个项目目录执行chmod -R 777,这会带来严重的安全风险(如敏感文件泄露、恶意文件上传)。public/uploads用于上传文件),需同步设置为770权限。chcon -R -t httpd_sys_rw_content_t /path/to/your_project/runtime)。