Invalid handle returned

本文针对PHP环境下连接SQL Server出现的Invalid handler returned错误进行了详细的故障排查与解决方案分享,包括配置检查、扩展更新及端口设置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报这个错先

1.检查连接配置。   这个会导致这个错误

2.http://blog.youkuaiyun.com/sangjinchao/article/details/63279158     开启服务(这个博主是我同学)

3.如果还不行

http://blog.youkuaiyun.com/sangjinchao/article/details/63279158    更换扩展

http://blog.youkuaiyun.com/sangjinchao/article/details/63279158     开启sqlserverl默认1433端口。


下面讲的是第三个解决办法的心酸过程。


我是php7 win10

之前是按我的这个文章配置的laravel sqlserver

http://blog.youkuaiyun.com/qq_35984195/article/details/78277356?locationNum=5&fps=1

但是有时候总报这个错  Invalid handle returned,有时候又没事,这让我很头疼


后来百度谷歌,说是扩展还是驱动(我这次解决问题并没有更新驱动)的问题,然后根据指引我去这个地址下载了扩展

https://github.com/Microsoft/msphpsql/releases/tag/v4.1.1-Windows

这里是参考文献

https://stackoverflow.com/questions/38222539/unable-to-connect-to-sql-server-with-php(就是别人解决的,我是总结别人的)

然后终于返回句柄了,然而又报了另外一个错

SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]

百度说是端口什么的问题

然后我查了查sqlserver默认端口1433,那就从端口下手吧

开启1433端口

https://www.2cto.com/database/201306/217563.html

。然后我的问题解决了。

如果并没有除根我会回来删了博客的。(2017.11.24 之前如果有问题就删或者改吗,否则就是可行)

#include <windows.h> #include <winioctl.h> #include <iostream> #include <vector> #include <string> // MFT相关结构定义 #pragma pack(push, 1) struct ATTRIBUTE_HEADER { DWORD type; DWORD length; BYTE non_resident; BYTE name_length; WORD name_offset; DWORD flags; WORD instance; }; struct FILE_NAME_ATTRIBUTE { DWORD parent_ref; DWORD parent_seq; LARGE_INTEGER ctime; LARGE_INTEGER mtime; LARGE_INTEGER atime; LARGE_INTEGER alloc_size; LARGE_INTEGER real_size; DWORD flags; DWORD reparse; BYTE name_length; WCHAR name[1]; }; #pragma pack(pop) std::vector<std::wstring> image_extensions = { L".jpg", L".jpeg", L".png", L".gif", L".bmp", L".tiff", L".webp", L".raw" }; bool is_image_file(const std::wstring& filename) { size_t dot_pos = filename.find_last_of(L'.'); if (dot_pos == std::wstring::npos) return false; std::wstring ext = filename.substr(dot_pos); for (const auto& img_ext : image_extensions) { if (_wcsicmp(ext.c_str(), img_ext.c_str()) == 0) return true; } return false; } void scan_volume(const wchar_t* volume_path) { HANDLE hVolume = CreateFileW( volume_path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL ); if (hVolume == INVALID_HANDLE_VALUE) { std::wcerr << L"无法打开卷: " << volume_path << L" 错误: " << GetLastError() << std::endl; return; } NTFS_VOLUME_DATA_BUFFER vol_data; DWORD bytes_returned; if (!DeviceIoControl( hVolume, FSCTL_GET_NTFS_VOLUME_DATA, NULL, 0, &vol_data, sizeof(vol_data), &bytes_returned, NULL)) { CloseHandle(hVolume); return; } // 读取MFT的逻辑需要在此继续实现 // (实际实现需要处理分页读取、属性解析等复杂操作) CloseHandle(hVolume); } int main() { scan_volume(L"\\\\.\\C:"); return 0; }
最新发布
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值