Ubuntu与ThinkPHP集成的注意事项
php -v命令确认版本,避免因版本不兼容导致框架无法运行。php-mysql(数据库连接)、php-mbstring(多字节字符串处理)、php-xml(XML解析)、php-curl(HTTP请求)、php-openssl(加密功能)等扩展。使用sudo apt install php-mysql php-mbstring php-xml php-curl php-openssl命令安装,缺失扩展会导致功能异常。mod_rewrite模块(sudo a2enmod rewrite),修改虚拟主机配置(如/etc/apache2/sites-available/000-default.conf),设置DocumentRoot指向项目根目录,添加AllowOverride All以允许.htaccess文件生效,最后重启Apache(sudo systemctl restart apache2)。server块中添加location / { try_files $uri $uri/ /index.php?$query_string; }(将请求转发至index.php),以及location ~ \.php$块处理PHP文件(指定fastcgi_pass为PHP-FPM socket路径,如unix:/run/php/php8.1-fpm.sock)。修改后重启Nginx(sudo systemctl restart nginx)。www-data)需对项目目录有读写权限。运行sudo chown -R www-data:www-data /path/to/your_project修改所有权,sudo chmod -R 755 /path/to/your_project设置权限,避免因权限不足导致文件无法访问或写入。runtime目录用于存储缓存、日志等临时文件,需设置为可写(sudo chmod -R 755 runtime),否则会导致缓存失效或日志无法记录。.env文件(而非config/database.php,避免提交敏感信息至版本控制),设置DB_CONNECTION=mysql(数据库类型)、DB_HOST=127.0.0.1(数据库主机)、DB_PORT=3306(数据库端口)、DB_DATABASE=your_db(数据库名)、DB_USERNAME=your_user(用户名)、DB_PASSWORD=your_pwd(密码),确保与Ubuntu服务器上的MySQL配置一致。composer create-project topthink/think your_project_name(如tp6)生成项目结构,Composer会自动安装框架及依赖。composer install安装依赖;更新依赖时使用composer update,确保依赖版本与框架兼容。.htaccess文件,添加以下内容以支持URL重写:<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</IfModule>,确保Apache启用了mod_rewrite。try_files指令将非文件/目录请求转发至index.php,配置location / { try_files $uri $uri/ /index.php?$query_string; },否则路由将无法识别。.env文件中的APP_DEBUG=false,避免暴露敏感错误信息(如数据库结构、代码逻辑)。DocumentRoot指向项目的public目录(而非项目根目录),防止用户直接访问app、config等敏感目录。例如Nginx配置中设置root /path/to/tp6/public。php.ini中禁用eval()、exec()、system()等危险函数,防止恶意代码执行。修改disable_functions参数,添加上述函数,重启PHP-FPM或Apache使配置生效。sudo apt install certbot python3-certbot-nginx(Nginx)或sudo apt install certbot python3-certbot-apache(Apache),按提示配置HTTPS,加密数据传输。/var/log/apache2/error.log;Nginx:/var/log/nginx/error.log)和PHP错误日志(/var/log/php8.1-fpm.log,路径取决于PHP版本),定位问题根源(如502错误可能因PHP-FPM未运行,路由失效可能因PATHINFO未开启)。sudo nginx -t(Nginx)或sudo apachectl configtest(Apache)检查语法是否正确,避免因配置错误导致服务无法启动。