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)檢查語法是否正確,避免因配置錯誤導致服務無法啟動。