• 问题杂编 ━━ windows2016安装php8.1及mysql8出现的问题汇总(简直就是*#*o#)


    本以为按照正常程序走就完了,结果遇到各种各样的问题,最终只能妥协用低版本成交。这里把所有问题的出现和解决整理出来,避免下次再遇到类似问题。

    安装mysql8失败

    安装mysql8之后,提示service无法启动,删了重装多次都不行,最终只能安装mysql5解决。。。
    而且原因并未找到,log提示尝试无密码连接失败

    今天安装另一台服务器,终于找到办法安装成功:《mysql配置时,提示:Failed to start service MYSQL80

    计算机管理 -> 本地用户和组 -> -> Administrators -> 添加 -> NETWORK SERVICE

    在这里插入图片描述
    NETWORK SERVICE 加入 administrator 组后继续执行mysql配置,成功~~~~

    在这里插入图片描述

    mysql备份恢复失败

    恢复备份时只恢复了表结构,表数据并未恢复,需要找到php.ini,将max_allowed_packet值变大

    # The maximum size of one packet or any generated or intermediate string, or any parameter sent by the
    # mysql_stmt_send_long_data() C API function.
    max_allowed_packet=50M
    
    • 1
    • 2
    • 3

    mysql备份恢复卡在日期为“0000-00-00”上

    目前默认的my.ini配置为严格模式,且禁止日期使用0000-00-00这种格式

    [mysqld]
    ...
    # The current server SQL mode, which can be set dynamically.
    # Modes affect the SQL syntax MySQL supports and the data validation checks it performs. This 
    # makes it easier to use MySQL in different environments and to use MySQL together with other 
    # database servers.
    sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    只需要修改为

    sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
    • 1

    重启MySQL服务后再恢复备份或导入sql都可以成功。
    在这里插入图片描述
    别忘了备份恢复后将my.ini配置恢复严格模式。
    建议不要恢复严格模式,除非你的代码都符合他的要求,我实际运行时因为没去掉ONLY_FULL_GROUP_BY,就出现了如下类似的错误:

    • 在MySQL 5.7及更高版本中,对于GROUP BY查询的限制更加严格,如果SELECT列表中的列不在GROUP BY子句中,或者没有使用聚合函数对其进行聚合,则会引发该错误。
    • 如果不加修饰符 ONLY_FULL_GROUP_BY,也可以在低版本 MySQL 中执行,但是在 5.7.5 及以上版本中,如果不加修饰符,则会报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘orders.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by。

    参考:一招解决MySQL5.7日期格式默认值0000-00-00 00:00:00设置报错Invalid default value for xxx

    安装php8.1.9失败

    *#*o#

    难得那么火大,一个简单的包,本机8.1.3还没问题,8.1.9遇了鬼了,这里一个个说来。

    正常安装方法见文章:PHP开发日志 ━━ IIS7安装PHP8.0及多个版本如何同时存在一台服务器

    fastcgi崩溃

    这个问题竟然在2年前就写过文章,但因为近2年没遇到这个问题,所以给忘了~~~

    在这里插入图片描述

    首先排除.net framework版本不正确。
    其次把程序池的进程模型 -> 标识 修改为:LocalSystem

    具体分析见文章
    服务器配置篇 ━━ iis7配置php出现fastcgi的500错误,LocalSystem/LocalService/NetworkService/ApplicationPoolIdentity
    iis + php 遇到问题:php-cgi.exe - FastCGI 进程意外退出
    解决php-cgi.exe - FastCGI 进程意外退出

    php8.1组件gd出错

    • 与原代码不兼容的地方太多,比如浮点32.142857142857146到int的隐式转换将丢失精度不再支持对整个 $GLOBALS 数组的写访问mt_srand()不为必须等;
    • 问题也太多,连gd组件都会出错,提示函数imagecreate()不存在。

    那就不用多说了,这个版本肯定不能使用,为了求稳,最终选择了php8.0版本使用

    PHP Deprecated: Implicit conversion from float xxx to int loses precision
    从 PHP 8.1.0 起,不再支持对整个 $GLOBALS 数组的写访问

    PHP保留字变化

    在操作数据库时,若某些字段命名为system等系统保留字时,php在sql语句中需要在该字段左右加上“`”符号

    删除某些windows角色和功能后各功能崩溃,提示缺少mscoree.dll

    因为在各种配置测试的时候安装了一些不需要的Windows功能,所以在使用mysql5和php8.0网站能正常打开后,决定把自认为不需要的功能都给删了重启试试,其中包括.net framework 3.5和4.5,结果。。。

    powershell服务器管理器IIS启用或关闭Windows功能等等都打不开,提示缺少mscoree.dll

    在这里插入图片描述

    唉,自作孽不可活啊。

    网上找了各种版本的mscoree.dll复制到c:\windows\system32目录里都无法正常启动,后来找到这篇文章才成功
    运行Windows终端(PowerShell)提示由于找不到mscoree.dll无法继续执行代码》。

    在这里插入图片描述

    • 方法一(本机测试失败):

    1、首先新建一个文本文档,打开新建文本文档,将下面代码复制进去:

    start /w pkgmgr /iu:Microsoft-Windows-NetFx3-OC-Package
    start /w pkgmgr /iu:Microsoft-Windows-NetFx4-US-OC-Package
    start /w pkgmgr /iu:Microsoft-Windows-NetFx3-WCF-OC-Package
    start /w pkgmgr /iu:Microsoft-Windows-NetFx4-WCF-US-OC-Package
    
    • 1
    • 2
    • 3
    • 4

    2、点击“文件”–“另存为”;

    在这里插入图片描述

    3、将保存类型修改为【所有文件】,然后将文件名修改为“.bat”,点击【保存】;
    4、右键 .bat -选择“以管理员身份运行”即可!

    等待命令框读取完成后重启一次计算机就可以完成修复了!

    • 方法二(可行):

    使用cmd,依次运行以下命令:

    dism /online /enable-feature /featurename:netfx3 /all
    dism /online /enable-feature /featurename:WCF-HTTP-Activation
    dism /online /enable-feature /featurename:WCF-NonHTTP-Activation
    
    • 1
    • 2
    • 3

    有可能在运行第二第三条命令时会提示需要先安装父功能

    即使用 dism /online /enable-feature /featurename:WCF-HTTP-Activation /alldism /online /enable-feature /all /featurename:WCF-HTTP-Activation 都可以

    在这里插入图片描述

    那么此时依次执行的命令为:

    dism /online /enable-feature /featurename:netfx3 /all
    dism /online /enable-feature /featurename:WCF-HTTP-Activation /all
    dism /online /enable-feature /featurename:WCF-HTTP-Activation
    dism /online /enable-feature /featurename:WCF-NonHTTP-Activation
    
    • 1
    • 2
    • 3
    • 4

    如果第一步命令执行后就去打开IIS等,很可能已经不再提示缺少.dll,而是提示需要NET FRAMEWORK V 4.0.30319启用,但安装时又可能提示不能安装~~

    我在第一步命令后成功下载安装过.net framework 4.8,但并没有什么用。

    如何使用DISM命令行工具修复Windows 10映像
    NET FRAMEWORK V 4.0.30319 to download
    Microsoft .NET Framework 4 KB2468871
    Microsoft .NET Framework 3.5 Service pack 1 (Full Package)

  • 相关阅读:
    【3568开发板教程上新】Android11移植开发教程升级来袭!
    [附源码]计算机毕业设计JAVA学生宿舍管理系统
    CPDA|对招聘HR来说,会数据分析有多香?
    C++基础——指针
    hadoop HDFS常用文件操作命令
    golang中如何配置 sql.DB 以获得更好的性能
    【golang】go 空结构体 详解 空结构体内容占用及大小
    kafka满五替换
    猿创征文|给设备做一个独立自主的小APP-实例详解
    销售词汇Sell In、Sell Through、Sell Out辨析
  • 原文地址:https://blog.csdn.net/snans/article/details/126510931