最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Windows環(huán)境下使用IIS部署PHP框架ThinkPHP5

 更新時間:2026年01月31日 09:51:05   作者:全棧小5  
本文詳細介紹了在Windows環(huán)境下使用IIS部署PHP框架ThinkPHP5的過程,包括環(huán)境準備、PHP和數(shù)據(jù)庫版本確認、配置文件設(shè)置、處理程序映射以及常見報錯處理

前言

博主今天抽空幫朋友部署一個PHP網(wǎng)站,平時接觸php的機會很少,之前也寫過一篇文章
介紹如果在IIS在部署PHP。
博主通過會看那篇文章發(fā)現(xiàn),后續(xù)的版本有點不一樣了,所以,再次寫篇文章記錄下。

代碼分析

現(xiàn)在有AI實在是太方便了,特別是很久沒接觸過php,已經(jīng)忘記在那些地方查看數(shù)據(jù)庫以及
當前代碼用的是php那個版本,以及用的ThinkPHP框架又是那個版本。
為什么說要看版本呢,因為不同的版本,代碼庫還是會有差異,版本使用不對,可能就會報錯運行不起來。

數(shù)據(jù)庫

首先要看下是用的什么數(shù)據(jù)庫,這個好判斷,大概能猜到,php一般都是用mysql。
讓AI進行掃描分析下代碼,數(shù)據(jù)庫的命名以及賬號密碼,確保運行時一致。
知道數(shù)據(jù)庫名稱后,就可以在mysql上先創(chuàng)建一個數(shù)據(jù)庫,然后執(zhí)行sql語句創(chuàng)建表和數(shù)據(jù)。


MYSQL歷史版本下載地址:https://downloads.mysql.com/archives/community/


php版本

通過AI分析后,知道了PHP版本是在5.4.0+,這就好辦了,用太低或者用太高版本都可能有問題。
用接近的或者使用一個穩(wěn)定性和兼容性好的一個版本。


ThinkPHP

通過上一步AI已經(jīng)知道是基于ThinkPHP框架開發(fā)的,進一步確認下是框架那個版本。
當前代碼使用的是ThinkPHP5.0.24,對應php版本要求是>=5.4.0。


版本兼容

進一步詢問AI是否兼容php最新版本的8.0+。
雖然AI只是給出了建議性,但是可以作為參考,優(yōu)先使用穩(wěn)定版本比較好。


PHP安裝

它是一種廣泛使用的開源通用腳本語言,特別適用于Web開發(fā)。PHP以其簡潔的語法和易于學習的特性而受到開發(fā)者的喜愛。它的特點是跨平臺、開源、簡單易學、靈活的框架、強大的數(shù)據(jù)庫支持、內(nèi)置服務(wù)器功能等。

下載地址

歷史版本:https://www.php.net/releases/


格式說明

  1. .tar.gz - 最常見的壓縮格式,幾乎所有系統(tǒng)都支持解壓。
  2. .tar.bz2 - 壓縮率通常比 .gz 更高,文件稍小,解壓稍慢。大部分主流工具也支持。
  3. .tar.xz - 壓縮率最高,文件最小,但解壓需要更多內(nèi)存和CPU時間。

選擇建議:

  • 如果您不確定,直接點擊 PHP 7.4.33 (tar.gz) 這個鏈接下載。這是最通用、最不容易出問題的選擇。
  • 如果您很在意下載文件的大小,可以選擇 .tar.xz
  • 下載后,您需要對應的解壓工具來解壓(如 Windows 上的 7-Zip,或 Linux/macOS 上的命令行工具)。

PHP CGI

但是這里我們不使用上面的壓縮文件,由于博主是在windows下部署php,
所以,直接下載NTS版本(包含php-cgi.exe)

64位:https://windows.php.net/downloads/releases/archives/php-7.4.33-nts-Win32-vc15-x64.zip

https://windows.php.net/downloads/releases/archives/



解壓

php是綠色版本,不需要運行安裝,直接解壓即可,并創(chuàng)建一個php目錄存放解壓文件,并配置一些信息。

配置

將PHP根目錄下的php.ini-production復制一份并改名為 php.ini,并進行如下設(shè)置:

設(shè)置路徑

找到extension_dir,并將前面的分號去掉(啟用),并復制php配置具體路徑,如下:


; http://php.net/extension-dir
extension_dir = "C:\web\php\php-7.4.33-nts-Win32-vc15-x64\ext"

設(shè)置擴展

extension=bz2
extension=curl
;extension=ffi
;extension=ftp
extension=fileinfo
extension=gd2
extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=ldap
extension=mbstring
extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
extension=pgsql
;extension=shmop

其他設(shè)置

設(shè)置時區(qū)date.timezone=Asia/Beijing
設(shè)置ssl=cacert.pem
開啟php短標簽short_open_tag=on
以CGI模式運行PHP cgi.force_redirect = 0
開啟IIS的FastCGI托管
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1

PHP部署

添加角色

如果是首次配置的IIS環(huán)境,需要添加角色以及CGI等應用,此處略過。



處理程序映射

點擊處理程序映射,再點添加模塊映射,彈窗填寫信息

請求路徑:*.php
模塊選擇:FastCgiModel
可執(zhí)行文件:php-cgi.exe(解壓文件里找)
名稱:phpcgi(自己自定義命名)

增加默認文件

添加默認文件,目的是訪問首頁不用輸入具體php文件名就能夠自動訪問默認的index.php文件。

PHP運行

常見報錯

缺少VC運行庫:
下載安裝:https://aka.ms/vs/16/release/vc_redist.x64.exe


5.5對應的是VC++2012


綠色版本

這里博主以mysql-5.7.44-winx64綠色版本為例子

文件結(jié)構(gòu)

D:\mysql-5.7.44-winx64\
├── bin\          # 可執(zhí)行文件
├── docs\         # 文檔
├── include\      # 頭文件
├── lib\          # 庫文件
├── share\        # 共享文件
├── LICENSE       # 許可證
└── README        # 說明文件

一鍵啟動

創(chuàng)建 start_mysql.bat,附上下面內(nèi)容運行即可開啟服務(wù),并且會自動創(chuàng)建my.ini文件

@echo off
chcp 65001 > nul
title MySQL 5.7.44 綠色版啟動器
setlocal enabledelayedexpansion

echo ========================================
echo     MySQL 5.7.44 綠色版啟動程序
echo ========================================
echo.

REM 設(shè)置MySQL根目錄(當前目錄)
set "MYSQL_DIR=%~dp0"
set "MYSQL_DIR=%MYSQL_DIR:~0,-1%"

echo MySQL目錄:%MYSQL_DIR%
echo.

REM 檢查必要的文件
if not exist "%MYSQL_DIR%\bin\mysqld.exe" (
    echo ? 錯誤:未找到 mysqld.exe
    pause
    exit /b 1
)

REM 檢查是否已安裝服務(wù)
sc query MySQL57 >nul 2>&1
if !errorlevel! equ 0 (
    echo [1/4] ? MySQL57服務(wù)已存在
    goto :START_SERVICE
)

echo [1/4] 準備安裝MySQL57服務(wù)...

REM 1. 創(chuàng)建必要的目錄
if not exist "%MYSQL_DIR%\data" mkdir "%MYSQL_DIR%\data"
if not exist "%MYSQL_DIR%\logs" mkdir "%MYSQL_DIR%\logs"

REM 2. 創(chuàng)建my.ini配置文件
echo [2/4] 創(chuàng)建配置文件...
(
echo [mysqld]
echo # MySQL安裝目錄
echo basedir=%MYSQL_DIR:\=/%
echo # MySQL數(shù)據(jù)目錄
echo datadir=%MYSQL_DIR:\=/%/data
echo # 端口
echo port=3306
echo # 字符集(使用utf8避免兼容問題)
echo character-set-server=utf8
echo collation-server=utf8_general_ci
echo # 最大連接數(shù)
echo max_connections=200
echo # 存儲引擎
echo default-storage-engine=INNODB
echo # Windows下不區(qū)分表名大小寫
echo lower_case_table_names=1
echo # 日志
echo log-error=%MYSQL_DIR:\=/%/logs/mysql_error.log
echo general_log_file=%MYSQL_DIR:\=/%/logs/mysql_general.log
echo # 跳過密碼驗證(第一次安裝后可以注釋掉)
echo # skip-grant-tables
echo.
echo [client]
echo default-character-set=utf8
echo port=3306
echo.
echo [mysql]
echo default-character-set=utf8
) > "%MYSQL_DIR%\my.ini"

REM 3. 初始化MySQL
echo [3/4] 初始化MySQL數(shù)據(jù)庫...
cd /d "%MYSQL_DIR%"
bin\mysqld --initialize-insecure --user=mysql --console
if !errorlevel! neq 0 (
    echo ?? 初始化可能已存在,繼續(xù)安裝...
)

REM 4. 安裝Windows服務(wù)
echo [4/4] 安裝MySQL服務(wù)...
bin\mysqld --install MySQL57 --defaults-file="%MYSQL_DIR%\my.ini"
if !errorlevel! neq 0 (
    echo ?? 服務(wù)安裝失敗,可能已存在
)

:START_SERVICE
echo.
echo 啟動MySQL服務(wù)...
net start MySQL57
if !errorlevel! equ 0 (
    echo ? MySQL 5.7.44 啟動成功!
    echo.
    echo ========================================
    echo 連接信息:
    echo 用戶名:root
    echo 密碼:(無,首次登錄請直接回車)
    echo 端口:3306
    echo.
    echo 連接命令:
    echo   %MYSQL_DIR%\bin\mysql -u root
    echo.
    echo 修改密碼命令(在MySQL中執(zhí)行):
    echo   ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密碼';
    echo   FLUSH PRIVILEGES;
    echo ========================================
) else (
    echo ? 服務(wù)啟動失敗
    echo 請查看日志:%MYSQL_DIR%\logs\mysql_error.log
)

echo.
echo 是否現(xiàn)在打開MySQL命令行?(Y/N)
set /p choice=
if /i "!choice!"=="y" (
    start "%MYSQL_DIR%\bin\mysql.exe" -u root
)

pause


停止服務(wù)

創(chuàng)建 stop_mysql.bat,附上下面內(nèi)容運行即可停止服務(wù)

@echo off
chcp 65001 > nul
echo 正在停止MySQL 5.7.44...

net stop MySQL57
if %errorlevel% equ 0 (
    echo ? MySQL已停止
) else (
    echo ?? 服務(wù)未運行或停止失敗
)

pause

卸載服務(wù)

創(chuàng)建uninstall_mysql.bat,附上下面內(nèi)容

@echo off
chcp 65001 > nul
echo ========================================
echo     卸載 MySQL 5.7.44 服務(wù)
echo ========================================
echo.

echo 正在停止MySQL服務(wù)...
net stop MySQL57 >nul 2>&1

echo 正在刪除MySQL服務(wù)...
sc delete MySQL57 >nul 2>&1
if %errorlevel% equ 0 (
    echo ? 服務(wù)刪除成功
) else (
    echo ?? 服務(wù)不存在或刪除失敗
)

echo.
echo 是否刪除數(shù)據(jù)文件?(Y/N)
echo 警告:這將刪除所有數(shù)據(jù)庫數(shù)據(jù)!
set /p choice=
if /i "%choice%"=="y" (
    rmdir /s /q "%~dp0data" 2>nul
    rmdir /s /q "%~dp0logs" 2>nul
    del "%~dp0my.ini" 2>nul
    echo ? 數(shù)據(jù)文件已刪除
)

echo.
echo 卸載完成!
pause

測試鏈接

創(chuàng)建 test_mysql.bat(測試連接)

@echo off
chcp 65001 > nul
echo 測試MySQL連接...

cd /d "%~dp0"
if exist "bin\mysql.exe" (
    bin\mysql -u root -e "SELECT VERSION() as MySQL版本;" 2>nul
    if %errorlevel% equ 0 (
        echo ? MySQL連接成功!
        bin\mysql -u root -e "SHOW DATABASES;"
    ) else (
        echo ? MySQL連接失敗
    )
) else (
    echo ? 未找到mysql.exe
)

pause

設(shè)置賬號

@echo off
chcp 65001 > nul
title MySQL 5.7.44 一鍵配置工具
setlocal enabledelayedexpansion

echo ========================================
echo     MySQL 5.7.44 一鍵配置工具
echo     自動創(chuàng)建test用戶并開啟遠程訪問
echo ========================================
echo.

REM 設(shè)置MySQL根目錄
set "MYSQL_DIR=%~dp0"
set "MYSQL_DIR=%MYSQL_DIR:~0,-1%"

echo MySQL目錄:%MYSQL_DIR%
echo.

REM 檢查必要的文件
if not exist "%MYSQL_DIR%\bin\mysqld.exe" (
    echo ? 錯誤:未找到 mysqld.exe
    echo 請將此腳本放在MySQL根目錄下運行
    pause
    exit /b 1
)

echo [1/7] 檢查MySQL服務(wù)狀態(tài)...
sc query MySQL57 >nul 2>&1
if !errorlevel! equ 0 (
    echo ? MySQL57服務(wù)已存在
    goto :CHECK_RUNNING
)

echo ?? MySQL57服務(wù)不存在,開始安裝...

REM 1. 創(chuàng)建必要的目錄
echo [2/7] 創(chuàng)建目錄結(jié)構(gòu)...
if not exist "%MYSQL_DIR%\data" mkdir "%MYSQL_DIR%\data"
if not exist "%MYSQL_DIR%\logs" mkdir "%MYSQL_DIR%\logs"

REM 2. 創(chuàng)建my.ini配置文件(支持遠程訪問)
echo [3/7] 創(chuàng)建配置文件...
(
echo [mysqld]
echo # 基礎(chǔ)配置
echo basedir=%MYSQL_DIR:\=/%
echo datadir=%MYSQL_DIR:\=/%/data
echo port=3306
echo character-set-server=utf8
echo collation-server=utf8_general_ci
echo max_connections=1000
echo default-storage-engine=INNODB
echo lower_case_table_names=1
echo log-error=%MYSQL_DIR:\=/%/logs/mysql_error.log
echo.
echo # 遠程訪問配置(關(guān)鍵?。?
echo bind-address=0.0.0.0
echo skip-name-resolve
echo wait_timeout=600
echo interactive_timeout=600
echo.
echo [client]
echo default-character-set=utf8
echo port=3306
echo.
echo [mysql]
echo default-character-set=utf8
) > "%MYSQL_DIR%\my.ini"

REM 3. 初始化MySQL(無密碼)
echo [4/7] 初始化MySQL數(shù)據(jù)庫...
cd /d "%MYSQL_DIR%"
echo 正在初始化,請稍候...
bin\mysqld --initialize-insecure --user=mysql --console >nul 2>&1
if exist "%MYSQL_DIR%\data\*.err" (
    echo ? 初始化完成
) else (
    echo ?? 初始化可能已存在
)

REM 4. 安裝Windows服務(wù)
echo [5/7] 安裝MySQL服務(wù)...
bin\mysqld --install MySQL57 --defaults-file="%MYSQL_DIR%\my.ini" >nul 2>&1
if !errorlevel! equ 0 (
    echo ? 服務(wù)安裝成功
) else (
    echo ?? 服務(wù)可能已存在
)

:CHECK_RUNNING
REM 5. 啟動MySQL服務(wù)
echo [6/7] 啟動MySQL服務(wù)...
net start MySQL57 >nul 2>&1
if !errorlevel! equ 0 (
    echo ? MySQL服務(wù)啟動成功
) else (
    net stop MySQL57 >nul 2>&1
    net start MySQL57 >nul 2>&1
    if !errorlevel! equ 0 (
        echo ? MySQL服務(wù)重啟成功
    ) else (
        echo ? MySQL服務(wù)啟動失敗
        echo 請查看日志:%MYSQL_DIR%\logs\mysql_error.log
        pause
        exit /b 1
    )
)

REM 6. 創(chuàng)建test用戶和數(shù)據(jù)庫
echo [7/7] 創(chuàng)建數(shù)據(jù)庫用戶...
echo 創(chuàng)建用戶:test,密碼:Test#2025
echo.

REM 使用臨時SQL文件創(chuàng)建用戶
(
echo USE mysql;
echo.
echo -- 刪除已存在的test用戶
echo DROP USER IF EXISTS 'test'@'localhost';
echo DROP USER IF EXISTS 'test'@'%%';
echo.
echo -- 創(chuàng)建test用戶(本地訪問)
echo CREATE USER 'test'@'localhost' IDENTIFIED BY 'Test#2025';
echo -- 授予所有權(quán)限
echo GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;
echo.
echo -- 創(chuàng)建test用戶(遠程訪問)
echo CREATE USER 'test'@'%%' IDENTIFIED BY 'Test#2025';
echo -- 授予所有權(quán)限
echo GRANT ALL PRIVILEGES ON *.* TO 'test'@'%%' WITH GRANT OPTION;
echo.
echo -- 刷新權(quán)限
echo FLUSH PRIVILEGES;
echo.
echo -- 驗證創(chuàng)建
echo SELECT user, host FROM mysql.user WHERE user = 'test';
echo SHOW GRANTS FOR 'test'@'%%';
) > "%TEMP%\create_user.sql"

REM 執(zhí)行SQL文件
cd /d "%MYSQL_DIR%\bin"
mysql -u root < "%TEMP%\create_user.sql"

REM 7. 配置Windows防火墻
echo 配置防火墻允許遠程連接...
netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306 >nul 2>&1
netsh advfirewall firewall add rule name="MySQL 3306 Out" dir=out action=allow protocol=TCP localport=3306 >nul 2>&1

REM 8. 獲取本機IP地址
echo.
echo 正在獲取本機IP地址...
echo.
echo 本機IP列表:
set count=0
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "IPv4"') do (
    set "ip=%%i"
    set "ip=!ip: =!"
    if not "!ip!"=="" (
        set /a count+=1
        echo [!count!] !ip!
        set "ip!count!=!ip!"
    )
)

REM 刪除臨時文件
del "%TEMP%\create_user.sql" >nul 2>&1

echo.
echo ========================================
echo         ? 配置完成!
echo ========================================
echo.
echo ?? 數(shù)據(jù)庫信息:
echo   主機:localhost 或 上面顯示的IP地址
echo   端口:3306
echo   用戶名:test
echo   密碼:Test#2025
echo.
echo ?? 連接方式:
echo   1. 本地連接:mysql -u test -pTest#2025
echo   2. Navicat連接:
echo       主機:上面顯示的IP地址 [!count!]
echo       端口:3306
echo       用戶:test
echo       密碼:Test#2025
echo.
echo ?? 測試連接:
echo   %MYSQL_DIR%\bin\mysql -u test -pTest#2025 -e "SELECT VERSION();"
echo.
echo ??? 安全提醒:
echo   1. 請及時修改root密碼:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
echo   2. 如需關(guān)閉遠程訪問,修改my.ini中的bind-address=127.0.0.1
echo ========================================
echo.

REM 測試連接
echo 正在測試test用戶連接...
%MYSQL_DIR%\bin\mysql -u test -pTest#2025 -e "SELECT '? 連接成功!' as Status, VERSION() as MySQL版本, USER() as 當前用戶, @@hostname as 服務(wù)器;" 2>nul
if !errorlevel! equ 0 (
    echo ? test用戶連接測試通過!
) else (
    echo ?? test用戶連接測試失敗,正在嘗試修復...
    REM 嘗試使用root創(chuàng)建用戶
    %MYSQL_DIR%\bin\mysql -u root -e "CREATE USER IF NOT EXISTS 'test'@'%%' IDENTIFIED BY 'Test#2025'; GRANT ALL ON *.* TO 'test'@'%%'; FLUSH PRIVILEGES;" 2>nul
)

echo.
set /p choice=是否打開MySQL命令行測試?(Y/N): 
if /i "!choice!"=="y" (
    start "%MYSQL_DIR%\bin\mysql.exe" -u test -pTest#2025
)

echo.
set /p choice2=是否創(chuàng)建測試數(shù)據(jù)庫?(Y/N): 
if /i "!choice2!"=="y" (
    %MYSQL_DIR%\bin\mysql -u test -pTest#2025 -e "CREATE DATABASE IF NOT EXISTS test_db; SHOW DATABASES;"
    echo ? 測試數(shù)據(jù)庫 test_db 已創(chuàng)建
)

pause


總結(jié)

到此這篇關(guān)于如何在Windows環(huán)境下使用IIS部署PHP框架ThinkPHP5的文章就介紹到這了,更多相關(guān)Windows使用IIS部署ThinkPHP5內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

阿城市| 新宁县| 自治县| 郑州市| 中江县| 封开县| 金平| 东阿县| 七台河市| 万州区| 普安县| 读书| 阿克陶县| 微山县| 通榆县| 二连浩特市| 上高县| 濮阳县| 色达县| 丘北县| 西贡区| 平凉市| 六枝特区| 铜梁县| 思南县| 招远市| 托克托县| 房山区| 渝中区| 栾川县| 博湖县| 师宗县| 滨州市| 泾阳县| 句容市| 广元市| 通河县| 平邑县| 洛浦县| 江阴市| 屏山县|