Мне было поручено перенести серверы. Это включает в себя перемещение по приложениям, которые я не создавал, у некоторых из которых есть соединение ADODB.con, которое я не могу исправить на новых серверах (у меня только пустые экраны).
Я достаточно тщательно исследовал ADODB.connection с PHP и не могу найти определенный источник. Большинство из них связаны с VB Script или даже с документами Excel. Я даже искал на YouTube, и единственное, что я нашел, было даже не на английском.
Я взял код предыдущего разработчика и создал test.php:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// echo 'hello' <-- I can show this to the page
$Conn = New COM("ADODB.Connection");
// echo 'hello again' <-- this will not show
$RS = New COM("ADODB.Recordset");
$Conn->Provider = "ADsDSOObject";
$Conn->Properties['User ID'] = "[email protected]";
$Conn->Properties['Password'] = "password";
$strConn = "Active Directory Provider";
$Conn->Open($strConn);
?>
Как вы увидите из приведенного выше кода, я, очевидно, могу вывести «hello» перед переменной $ conn. Ничто не работает после переменной $ conn.
Я не знаком с ADODB.connection или Active Directory.
Как я могу протестировать этот код, если я не могу ничего отразить после переменной $ conn? Что мне не хватает? Что я могу добавить?
Я не вижу ничего, связанного с ADODB в phpinfo. Наиболее близким является ODBC, который включен.
Я просто добавил 2 дополнительные строки по запросу @Hackerman.
Вот ошибки, отображаемые на странице:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\htdocs\application1\include\database.php on line 25
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\htdocs\application1\include\database.php on line 28
Deprecated: Function mysql_numrows() is deprecated in D:\htdocs\application1\include\database.php on line 226
Deprecated: Function mysql_numrows() is deprecated in D:\htdocs\application1\include\database.php on line 237
Deprecated: Function mysql_numrows() is deprecated in D:\htdocs\application1\include\database.php on line 100
Deprecated: Function mysql_numrows() is deprecated in D:\htdocs\application1\include\database.php on line 180
Deprecated: Function mysql_numrows() is deprecated in D:\htdocs\application1\include\database.php on line 226
Deprecated: Function mysql_numrows() is deprecated in D:\htdocs\application1\include\database.php on line 226
Deprecated: Function mysql_numrows() is deprecated in D:\htdocs\application1\include\database.php on line 237
Fatal error: Class 'COM' not found in D:\htdocs\application1\admin\test.php on line 8
Предыдущий разработчик действительно использовал MySQL вместо mysqli или PDO, что объясняет устаревшие ошибки.
Я надеюсь, что последняя ошибка проливает свет на проблему ADODB.
Установил файл php_com_dotnet.dll в папку расширения и включил этот файл в файл php.ini и получил следующую ошибку:
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `ADODB.Connection': The specified module could not be found. ' in D:\htdocs\application1\admin\test.php:8 Stack trace: #0 D:\htdocs\application1\admin\test.php(8): com->com('ADODB.Connectio...') #1 {main} thrown in D:\htdocs\application1\admin\test.php on line 8
Задача ещё не решена.
Других решений пока нет …