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

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

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

前言

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

代碼分析

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

數(shù)據(jù)庫

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


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


php版本

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


ThinkPHP

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


版本兼容

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


PHP安裝

它是一種廣泛使用的開源通用腳本語言,特別適用于Web開發(fā)。PHP以其簡(jiǎn)潔的語法和易于學(xué)習(xí)的特性而受到開發(fā)者的喜愛。它的特點(diǎn)是跨平臺(tái)、開源、簡(jiǎn)單易學(xué)、靈活的框架、強(qiáng)大的數(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時(shí)間。

選擇建議:

  • 如果您不確定,直接點(diǎn)擊 PHP 7.4.33 (tar.gz) 這個(gè)鏈接下載。這是最通用、最不容易出問題的選擇。
  • 如果您很在意下載文件的大小,可以選擇 .tar.xz。
  • 下載后,您需要對(duì)應(yīng)的解壓工具來解壓(如 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是綠色版本,不需要運(yùn)行安裝,直接解壓即可,并創(chuàng)建一個(gè)php目錄存放解壓文件,并配置一些信息。

配置

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

設(shè)置路徑

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


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

設(shè)置擴(kuò)展

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è)置時(shí)區(qū)date.timezone=Asia/Beijing
設(shè)置ssl=cacert.pem
開啟php短標(biāo)簽short_open_tag=on
以CGI模式運(yùn)行PHP cgi.force_redirect = 0
開啟IIS的FastCGI托管
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1

PHP部署

添加角色

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



處理程序映射

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

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

增加默認(rèn)文件

添加默認(rèn)文件,目的是訪問首頁不用輸入具體php文件名就能夠自動(dòng)訪問默認(rèn)的index.php文件。

PHP運(yùn)行

常見報(bào)錯(cuò)

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


5.5對(duì)應(yīng)的是VC++2012


綠色版本

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

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

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

一鍵啟動(dòng)

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

@echo off
chcp 65001 > nul
title MySQL 5.7.44 綠色版啟動(dòng)器
setlocal enabledelayedexpansion

echo ========================================
echo     MySQL 5.7.44 綠色版啟動(dòng)程序
echo ========================================
echo.

REM 設(shè)置MySQL根目錄(當(dāng)前目錄)
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 ? 錯(cuò)誤:未找到 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] 準(zhǔn)備安裝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 # 存儲(chǔ)引擎
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 # 跳過密碼驗(yàn)證(第一次安裝后可以注釋掉)
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 啟動(dòng)MySQL服務(wù)...
net start MySQL57
if !errorlevel! equ 0 (
    echo ? MySQL 5.7.44 啟動(dòng)成功!
    echo.
    echo ========================================
    echo 連接信息:
    echo 用戶名:root
    echo 密碼:(無,首次登錄請(qǐng)直接回車)
    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ù)啟動(dòng)失敗
    echo 請(qǐng)查看日志:%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)容運(yùn)行即可停止服務(wù)

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

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

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

測(cè)試鏈接

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

@echo off
chcp 65001 > nul
echo 測(cè)試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è)置賬號(hào)

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

echo ========================================
echo     MySQL 5.7.44 一鍵配置工具
echo     自動(dòng)創(chuàng)建test用戶并開啟遠(yuǎn)程訪問
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 ? 錯(cuò)誤:未找到 mysqld.exe
    echo 請(qǐng)將此腳本放在MySQL根目錄下運(yùn)行
    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配置文件(支持遠(yuǎn)程訪問)
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 # 遠(yuǎn)程訪問配置(關(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 正在初始化,請(qǐng)稍候...
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. 啟動(dòng)MySQL服務(wù)
echo [6/7] 啟動(dòng)MySQL服務(wù)...
net start MySQL57 >nul 2>&1
if !errorlevel! equ 0 (
    echo ? MySQL服務(wù)啟動(dòng)成功
) else (
    net stop MySQL57 >nul 2>&1
    net start MySQL57 >nul 2>&1
    if !errorlevel! equ 0 (
        echo ? MySQL服務(wù)重啟成功
    ) else (
        echo ? MySQL服務(wù)啟動(dòng)失敗
        echo 請(qǐng)查看日志:%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 使用臨時(shí)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用戶(遠(yuǎn)程訪問)
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 -- 驗(yàn)證創(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 配置防火墻允許遠(yuǎn)程連接...
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. 獲取本機(jī)IP地址
echo.
echo 正在獲取本機(jī)IP地址...
echo.
echo 本機(jī)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 刪除臨時(shí)文件
del "%TEMP%\create_user.sql" >nul 2>&1

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

REM 測(cè)試連接
echo 正在測(cè)試test用戶連接...
%MYSQL_DIR%\bin\mysql -u test -pTest#2025 -e "SELECT '? 連接成功!' as Status, VERSION() as MySQL版本, USER() as 當(dāng)前用戶, @@hostname as 服務(wù)器;" 2>nul
if !errorlevel! equ 0 (
    echo ? test用戶連接測(cè)試通過!
) else (
    echo ?? test用戶連接測(cè)試失敗,正在嘗試修復(fù)...
    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命令行測(cè)試?(Y/N): 
if /i "!choice!"=="y" (
    start "%MYSQL_DIR%\bin\mysql.exe" -u test -pTest#2025
)

echo.
set /p choice2=是否創(chuàng)建測(cè)試數(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 ? 測(cè)試數(shù)據(jù)庫 test_db 已創(chuàng)建
)

pause


總結(jié)

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

相關(guān)文章

最新評(píng)論

兴国县| 博乐市| 南充市| 桑植县| 江达县| 两当县| 寿光市| 辰溪县| 新安县| 内黄县| 无为县| 乌拉特后旗| 宜兴市| 突泉县| 榆林市| 尼玛县| 孟津县| 乌拉特前旗| 万年县| 高淳县| 洪雅县| 平阴县| 新平| 保定市| 和政县| 垦利县| 育儿| 改则县| 鞍山市| 西安市| 衡水市| 华宁县| 固阳县| 柳江县| 怀安县| 平潭县| 陕西省| 蛟河市| 荆门市| 马龙县| 彝良县|