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)检查语法是否正确,避免因配置错误导致服务无法启动。