Переносим наш физический сервер на ВМ и сталкиваемся с проблемой со страницей, использующей OpenEdge ODBC для сбора данных. Локальный компьютер возвращает правильные данные и формат массива. ВМ возвращает значения в виде имен полей, а также пропускает некоторые поля.
Результаты локальной машины:
[billoflading] => 36003
[Codcliente] => 785
[Confirmado] => 0
[Enviara] =>
[Exportado] => 0
[Fembarcado] => 2017-11-02
[Hembarcado] => 52856
[Linea] =>
[pull_num] => 105461
[Salesorder] => 1151086
[Tipo] =>
[Trailer] => 7327
[transmitido] => 1
Результаты ВМ:
[36003] => 36003
[785] => 785
[0] => 0
[] =>
[2017-11-02] => 2017-11-02
[52856] => 52856
[105461] => 105461
[1151086] => 1151086
[7327] => 7327
[1] => 1
Тестовая машина и виртуальная машина используют одну и ту же версию кода и драйверы OpenEdge. Версии PHP разные, но физический сервер (который все еще работает) работает на более старой версии. Проверено php.ini и они настроены точно так же. Мы используем Laravel, но все 3 версии (локальная, ВМ, & физические) одинаковы.
Фрагмент кода:
$conn_id = odbc_connect("****","****","****", SQL_CUR_USE_ODBC);
$sql = "Select * FROM PUB.Shipper where billoflading ='36003'";
$result = odbc_do($conn_id, $sql);
echo "<pre>";
while($row = odbc_fetch_array($result)){
print_r($row);
}
echo "</pre>";
Любая помощь приветствуется!
использование odbc_field_name()
чтобы получить имена полей в каждой позиции, например, это должно отобразить «биллфлейдинг»:
echo odbc_field_name( $conn_id, 1 );
Других решений пока нет …