Имеется следующая проблема - PHP7(Сервер на CentOS), установлена PDO ODBC библиотека. Запросы к серверу MsSQL(2016) делаю через него. Проблема в следующем - мне необходимо записать содержимое файла, но записываются только первые 4000 байт данных. Что уже пробовал сделать:
1. Запрос SET TEXTSIZE 99999999 - эта штука работает только в обратную сторону - т.е. при SET TEXTSIZE 99 запишет только 99 байт, а при SET TEXTSIZE 999999 запишет только 4000. Нагуглил запрос SET TEXTLIMIT, но сервер его не распознает и выдает ошибку.
2. Пробовал прописать в php.ini mssql.textsize, mssql.textlimit но безрезультатно, т.е. эти переменные вообще не появляются в php.ini(апач и сервер перезагружались после правок файла). Я так понимаю, что они имели смысл для mssql_query, которую благополучно выпилили в 7 версии PHP а в ODBC они просто не работают
3. Переменная odbc.defaultlrl равна 150k, по идее должно хватать с запасом
4. На самом сервере ограничений нет, т.е. я без проблем подключился через heidiSQL и записал огроменный текст без проблем
5. Поле имеет тип IMAGE
На всякий привожу код
$CreatedOn = strval(date("Y-m-d H:i:s"));
$dbh = new PDO('odbc:DRIVER=FreeTDS;SERVERNAME=myMssql;DATABASE=' .
$database.';charset=UTF-8', $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query='SET TEXTSIZE 9999999';
$stmt=$dbh->prepare($query);
$stmt->execute();
$stmt=null;
$ins = "insert into tbl_Files(ItemTypeID, Link, FileData, CreatedOn)
values (
'{39A5B367-4A7A-473E-8F74-26977CB6DB67}', 'filename.txt', :content, '{$CreatedOn}'
)";
$stmt = $dbh->prepare($ins);
$filename = "test.txt";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
$stmt->bindParam(':content', $contents, PDO::PARAM_LOB);
$stmt->execute();
Буду очень благодарен, если кто подскажет куда копать