Я использую PHP 5.3.1 в IIS 7.5 в Windows 7 Ultimate x64. Я пытался подключить PHP к моей локальной установке SQL Server 2008 Express через ODBC с помощью ADODB. Сначала у меня возникли проблемы с подключением, потому что даже после того, как я добавил свой локальный SQL-сервер в качестве DSN сервера в диспетчере ODBC, я продолжал получать эту ошибку:
[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application
я спросил об этом на Stack Overflow и получил ответ. Оглядываясь назад, я, наверное, должен был спросить об этом здесь, но я получил свой ответ, так что мне все равно. (К тому же мне совершенно не нравится тот факт, что сайты трилогии разделены в первую очередь, но это уже другая история ...)
В любом случае, после настройки источника данных с использованием% windir% \ sysWOW64 \ odbcad32.exe вместо этого я, похоже, добился некоторого прогресса. Я больше не получаю указанную выше ошибку. Вместо этого я получаю, казалось бы, гораздо более злую ошибку, а именно эту:
Раньше я получал простое исключение PHP. Теперь мой PHP-скрипт выполняет эквивалент segfaulting, потому что он явно зависает от этого 64-битного драйвера ODBC. Помогите! Подключение к SQL Server должно быть относительно простой и понятной задачей, так что мне нужно сделать, чтобы все заработало?
ОБНОВЛЕНИЕ: я начинаю награду, потому что мне действительно нужно, чтобы SQL Server и PHP скоро разговаривали друг с другом. Один плакат предложил мне проверить журнал событий, но он ничего не показывает, а другой плакат предложил мне включить отслеживание неудачных запросов, что я сделал, но я не уверен, что это дает что-то важное. Копию трассировки ошибок можно найти Вот (Только IE). У меня также показан (очень простой) скрипт PHP Вот. Я изменил имя подключения на «MYCOMPUTER», изменил имя конкретной базы данных / каталога на «MyDatabase» и скрыл пароль, но не внес никаких других изменений.
Немного предыстории:
Если я попытаюсь подключиться к MYCOMPUTER в том скрипте, на который я ссылался, я получаю ужасную ошибку 500. Если я попытаюсь подключиться к MYCOMPUTER64 в том же сценарии, я получу ошибку «несоответствие архитектуры», указанную выше. В любом случае это не работает. Мне нужно, чтобы он работал. Пожалуйста помоги.
Я обнаружил, что если вы неправильно посмотрите на PHP + ODBC при использовании IIS7, он даст вам общий 500. Получение ошибки 500, равной «0», - это очень весело.
У меня такое ощущение, что вы подходите к этому со стороны OS / IIS, когда выполнение этого со стороны кода PHP может привести нас к ошибке быстрее (теперь, когда вы выяснили проблему с драйвером).
PHPInfo работает должным образом?
В какой строке из указанного PHP-скрипта произошел сбой? Если у вас нет другого пути, просто закомментируйте все внутри тегов PHP, посмотрите, сработает ли он, чтобы получить пустую страницу; затем не комментируйте строки и разделы кода (последние - самые внутренние) по очереди, пока не найдете ту, которая вызывает ошибку.
Поскольку ваш тестовый сценарий короткий, это будет легко, и, надеюсь, он укажет на то, что нужно проверить.
HTH.
Вы обязательно включили 32-разрядные приложения? Это можно найти в пуле приложений для вашего сайта в разделе «Дополнительные настройки» -> «Общие».
Я послал совет в другом месте, чтобы использовать эту команду, чтобы заставить IIS работать как 32-битный -
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
- но я не могу подтвердить его эффективность.
Я действительно рекомендую не называя все одинаково. Может быть очень сложно определить, какой MYCOMPUTER выдает ошибку, например ...
Предыдущее предложение просмотреть вывод PHPinfo - хорошее. Это докажет, работает ли PHP, прежде чем он перейдет к взаимодействию с ODBC.
Похоже, обработчик PHP не работает. Вы проверили обработчик расширения PHP в настройках обработчика http? Пожалуйста, также проверьте разрешение вашего обработчика PHP.
500 - Внутренняя ошибка сервера - это очень типичная ошибка, означающая, что есть проблема с конфигурацией сервера. Код ошибки: 0x00000000 означает «Нет ошибки», вы можете включить отслеживание неудачных запросов на веб-сайте и проверить, что вызывает проблему.
Почему вы используете ODBC и DSN вместо собственного драйвера SQL Server PHP?
Это худшее, что вы можете сделать при подключении к базе данных SQL Server.