@@ -25,6 +25,7 @@ public static function init(): void
2525 FileSystem::addSourceExtractHook ('php-src ' , [__CLASS__ , 'patchFfiCentos7FixO3strncmp ' ]);
2626 FileSystem::addSourceExtractHook ('sqlsrv ' , [__CLASS__ , 'patchSQLSRVWin32 ' ]);
2727 FileSystem::addSourceExtractHook ('pdo_sqlsrv ' , [__CLASS__ , 'patchSQLSRVWin32 ' ]);
28+ FileSystem::addSourceExtractHook ('pdo_sqlsrv ' , [__CLASS__ , 'patchSQLSRVPhp85 ' ]);
2829 FileSystem::addSourceExtractHook ('yaml ' , [__CLASS__ , 'patchYamlWin32 ' ]);
2930 FileSystem::addSourceExtractHook ('libyaml ' , [__CLASS__ , 'patchLibYaml ' ]);
3031 FileSystem::addSourceExtractHook ('php-src ' , [__CLASS__ , 'patchImapLicense ' ]);
@@ -432,6 +433,23 @@ public static function patchSQLSRVWin32(string $source_name): bool
432433 return false ;
433434 }
434435
436+ /**
437+ * Fix the compilation issue of pdo_sqlsrv with php 8.5
438+ */
439+ public static function patchSQLSRVPhp85 (): bool
440+ {
441+ $ source_dir = SOURCE_PATH . '/php-src/ext/pdo_sqlsrv ' ;
442+ if (!file_exists ($ source_dir . '/config.m4 ' ) && is_dir ($ source_dir . '/source/pdo_sqlsrv ' )) {
443+ FileSystem::moveFileOrDir ($ source_dir . '/LICENSE ' , $ source_dir . '/source/pdo_sqlsrv/LICENSE ' );
444+ FileSystem::moveFileOrDir ($ source_dir . '/source/shared ' , $ source_dir . '/source/pdo_sqlsrv/shared ' );
445+ FileSystem::moveFileOrDir ($ source_dir . '/source/pdo_sqlsrv ' , SOURCE_PATH . '/pdo_sqlsrv ' );
446+ FileSystem::removeDir ($ source_dir );
447+ FileSystem::moveFileOrDir (SOURCE_PATH . '/pdo_sqlsrv ' , $ source_dir );
448+ return true ;
449+ }
450+ return false ;
451+ }
452+
435453 public static function patchYamlWin32 (): bool
436454 {
437455 FileSystem::replaceFileStr (SOURCE_PATH . '/php-src/ext/yaml/config.w32 ' , "lib.substr(lib.length - 6, 6) == '_a.lib' " , "lib.substr(lib.length - 6, 6) == '_a.lib' || 'yes' == 'yes' " );
0 commit comments