Когда я запускаю php из командной строки, это работает отлично, и мой запрос выполняется без проблем.ЕСЛИ я получаю доступ через Интернет, хотя время ожидания истекает.
function query_sql2($query,$ar,$results =1)
{
global $hostname,$username,$password;
$mssqldriver = '{ODBC Driver 17 for SQL Server}';
//$mssqldriver = '{ODBC Driver 13 for SQL Server}';
$dbname='unclaimed';
$odbc="odbc:Driver=$mssqldriver;Server=$hostname;Database=$dbname;";
$result = array();
try {
$dbDB = new PDO($odbc, $username, $password);
$dbDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if($dbDB)
{
//echo "Connected!";
$sql = "set ANSI_WARNINGS on
set ANSI_PADDING on
set ANSI_NULLS on
set ARITHABORT on
set QUOTED_IDENTIFIER on
set NOCOUNT on
set ANSI_NULL_DFLT_ON on
set CONCAT_NULL_YIELDS_NULL on
".$query;
$query = $dbDB->prepare($sql);
$query->execute($ar);
if($results ==1)
{
$result = $query -> fetchAll(PDO::FETCH_ASSOC);
}
}
}
catch(Exception $e) {
echo 'Exception -> ';
var_dump($e->getMessage());
}
//$sth = null;
$dbDB = null;
return $result;
}
print_r(query_sql2("exec signedDocument.dbo.sp_signeddocument_modify ;",[],1));
Но если я запускаю через свой Apache, я получаю эту ошибку SQLSTATE [HYT00] SQLDriverConnect: 0 [unixODBC] [Microsoft] [Драйвер ODBC 17 для SQL Server] Время ожидания входа истекло
Я чамод 777 в и т. Д. И в opt / Microsoft, которая нет нет, но ничего не работает.Вот мой вывод из odbcinst -j
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
И, наконец, мой odbcinst.ini (ни один из этих файлов не указан выше)
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
UsageCount=1
Не знаю, что ещепопробовать