Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MSSql PDO problem z połączeniem
PROGer
post 7.05.2015, 09:42:47
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z połaczeniem się z bazą danych MSSql w wersji 9.0001399.00 (2005). Uprzedzę pytania i dodam że zmiana na nowsza nie wchodzi w tym przypadku w grę. Dodatkowo inne prehistoryczne lelementy to PHP v. 5.2.6 i Apache v 2.2

Połaczenie testuję poprzez (nie wiem czy poprawnie):

  1. <?php
  2. try {
  3.  
  4. $db = new PDO('odbc:Driver={SQL Server};Server=localhost;Database=TEST02; Uid=TEST02\User1;Pwd=Password2');
  5.  
  6. } catch (PDOException $e) {
  7.  
  8. echo $e->getMessage();
  9. }
  10. ?>


Sterowniki które umieściłem w php/ext i które zadeklarowałem w php.ini na samym końcu to:
extension=php_pdo_sqlsrv_52_nts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_53_nts_vc6.dll
extension=php_pdo_sqlsrv_53_nts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc6.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll


Test wyrzuca mimo to błąd:
could not find driver

Co może być nie tak?
Go to the top of the page
+Quote Post
Turson
post 7.05.2015, 09:50:46
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Restart Apache był?
Go to the top of the page
+Quote Post
PROGer
post 7.05.2015, 09:51:58
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


Tak był oczywiście.

Wycinek z końca php.ini''
  1. [gd]
  2. ; Tell the jpeg decode to libjpeg warnings and try to create
  3. ; a gd image. The warning will then be displayed as notices
  4. ; disabled by default
  5. ;gd.jpeg_ignore_warning = 0
  6.  
  7. [exif]
  8. ; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
  9. ; With mbstring support this will automatically be converted into the encoding
  10. ; given by corresponding encode setting. When empty mbstring.internal_encoding
  11. ; is used. For the decode settings you can distinguish between motorola and
  12. ; intel byte order. A decode setting cannot be empty.
  13. ;exif.encode_unicode = ISO-8859-15
  14. ;exif.decode_unicode_motorola = UCS-2BE
  15. ;exif.decode_unicode_intel = UCS-2LE
  16. ;exif.encode_jis =
  17. ;exif.decode_jis_motorola = JIS
  18. ;exif.decode_jis_intel = JIS
  19.  
  20. [Tidy]
  21. ; The path to a default tidy configuration file to use when using tidy
  22. ;tidy.default_config = /usr/local/lib/php/default.tcfg
  23.  
  24. ; Should tidy clean and repair output automatically?
  25. ; WARNING: Do not use this option if you are generating non-html content
  26. ; such as dynamic images
  27. tidy.clean_output = Off
  28.  
  29. [soap]
  30. ; Enables or disables WSDL caching feature.
  31. soap.wsdl_cache_enabled=1
  32. ; Sets the directory name where SOAP extension will put cache files.
  33. soap.wsdl_cache_dir="/tmp"
  34. ; (time to live) Sets the number of second while cached file will be used
  35. ; instead of original one.
  36. soap.wsdl_cache_ttl=86400
  37.  
  38. ; Local Variables:
  39. ; tab-width: 4
  40. ; End:
  41. [PHP_CURL]
  42. extension=php_curl.dll
  43. [PHP_GD2]
  44. extension=php_gd2.dll
  45. [PHP_LDAP]
  46. extension=php_ldap.dll
  47. [PHP_MBSTRING]
  48. extension=php_mbstring.dll
  49. [PHP_MCRYPT]
  50. extension=php_mcrypt.dll
  51. [PHP_MSSQL]
  52. extension=php_mssql.dll
  53. [PHP_MYSQL]
  54. extension=php_mysql.dll
  55. [PHP_XMLRPC]
  56. extension=php_xmlrpc.dll
  57. [PHP_GETTEXT]
  58. extension=php_gettext.dll
  59. [PHP_PDO]
  60. extension=php_pdo.dll
  61. [PHP_PDO_MSSQL]
  62. extension=php_pdo_mssql.dll
  63. [PHP_PDO_MYSQL]
  64. extension=php_pdo_mysql.dll
  65. [PHP_PDO_OCI8]
  66. ;extension=php_pdo_oci8.dll
  67. [PHP_OCI8]
  68. extension=php_oci8.dll
  69.  
  70. extension=php_pdo_sqlsrv_52_nts_vc6.dll
  71. extension=php_pdo_sqlsrv_52_ts_vc6.dll
  72. extension=php_pdo_sqlsrv_53_nts_vc6.dll
  73. extension=php_pdo_sqlsrv_53_nts_vc9.dll
  74. extension=php_pdo_sqlsrv_53_ts_vc6.dll
  75. extension=php_pdo_sqlsrv_53_ts_vc9.dll
  76.  
  77. extension=php_sqlsrv_52_nts_vc6.dll
  78. extension=php_sqlsrv_52_ts_vc6.dll
  79. extension=php_sqlsrv_53_nts_vc6.dll
  80. extension=php_sqlsrv_53_nts_vc9.dll
  81. extension=php_sqlsrv_53_ts_vc6.dll
  82. extension=php_sqlsrv_53_ts_vc9.dll


Ten post edytował PROGer 7.05.2015, 09:55:07
Go to the top of the page
+Quote Post
Pyton_000
post 7.05.2015, 09:52:56
Post #4





Grupa: Zarejestrowani
Postów: 7 742
Pomógł: 1362
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


poczytaj to: http://stackoverflow.com/questions/1124600...river-not-found
Go to the top of the page
+Quote Post
PROGer
post 7.05.2015, 10:14:37
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


Przeczytałem, ale nic to nie wniosło.

Próbuje połaczyć sie te w taki sposób:
  1. $dsn = 'mssql:host=localhost;dbname=TEST02';
  2. $user = 'TEST02\User1';
  3. $password = 'Password2';
  4.  
  5. try {
  6. $dbh = new PDO($dsn, $user, $password);
  7. } catch (PDOException $e) {
  8. echo 'Connection failed: ' . $e->getMessage();
  9. }



ale mam to samo:
Connection failed: could not find driver

Problem w tym że nie moge użyć odbc. Zend tego nie wspiera.
Musze skorzystac z PDO. Podstawiam wlaściwy sterownik do tej wersji apacha, w php.ini zakomentowałem teraz nawet wszystkie te sterownik, które nie są używane pozostając przy:

  1. [PHP_PDO]
  2. extension=php_pdo.dll
  3. [PHP_PDO_MSSQL]
  4. ;extension=php_pdo_mssql.dll
  5. extension=php_pdo_sqlsrv_52_nts_vc6.dll
  6. [PHP_PDO_MYSQL]
  7. extension=php_pdo_mysql.dll
  8. [PHP_PDO_OCI8]
  9. ;extension=php_pdo_oci8.dll
  10. [PHP_OCI8]
  11. extension=php_oci8.dll
  12.  
  13. ;extension=php_pdo_sqlsrv_52_nts_vc6.dll
  14. ;extension=php_pdo_sqlsrv_52_ts_vc6.dll
  15. ;extension=php_pdo_sqlsrv_53_nts_vc6.dll
  16. ;extension=php_pdo_sqlsrv_53_nts_vc9.dll
  17. ;extension=php_pdo_sqlsrv_53_ts_vc6.dll
  18. ;extension=php_pdo_sqlsrv_53_ts_vc9.dll
  19.  
  20. ;extension=php_sqlsrv_52_nts_vc6.dll
  21. ;extension=php_sqlsrv_52_ts_vc6.dll
  22. ;extension=php_sqlsrv_53_nts_vc6.dll
  23. ;extension=php_sqlsrv_53_nts_vc9.dll
  24. ;extension=php_sqlsrv_53_ts_vc6.dll
  25. ;extension=php_sqlsrv_53_ts_vc9.dll




Pytanie dodatkowe.
W Mizrosoft SQL Server Management Studio widze że łącząc się z baza mam ustawioną autentykację na Windnowsa, połączenie odbywa się poprawnie. Może mieć to jakiś wpływ?
Go to the top of the page
+Quote Post
salfunglandyare
post 7.05.2015, 11:55:12
Post #6





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


Dodaj php_pdo_odbc.dll i sprobuj jak wcześniej - odbc przez pdo
Go to the top of the page
+Quote Post
PROGer
post 7.05.2015, 12:02:21
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


ściągnąłem ten dll, umieściłem w php/ext, dodałem na końcu php.ini wpis extension=php_pdo_odbc.dll, zrestartowałem apacha i bez zmian ....
zainstalowałem nawet pakiety SQL Server Native Client for Windows.

Może jeszcze komuś coś przyjdzie na myśl?
Go to the top of the page
+Quote Post
salfunglandyare
post 7.05.2015, 12:16:19
Post #8





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


jeszcze taka jedna rzecz:
* print_r(PDO::getAvailableDrivers()); pokaże jakie są Twoje aktualne drivery
* Spróbuj się połączyć $db = new PDO('odbc:Server=127.0.0.1;Database=TEST02; Uid=TEST02\User1;Pwd=Password2');
Go to the top of the page
+Quote Post
PROGer
post 7.05.2015, 12:29:14
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


Array ( [0] => sqlsrv ) could not find driver
druga opcja połączenia bez zmian.
Go to the top of the page
+Quote Post
salfunglandyare
post 7.05.2015, 12:42:35
Post #10





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


oznacza to, że masz załadowany tylko driver sqlsrv (mssql i odbc sa wylaczone)
to sprobuj tak:
  1. $db = new PDO( 'sqlsrv:server=localhost;Database=TEST02', 'TEST02\User1', 'Password2');
Go to the top of the page
+Quote Post
PROGer
post 7.05.2015, 12:54:30
Post #11





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


  1. Array ( [0] => sqlsrv ) SQLSTATE[IMSSP]: This extension requires either the Microsoft SQL Server 2008 Native Client (SP1 or later) or the Microsoft SQL Server 2008 R2 Native Client ODBC Driver to communicate with SQL Server. Neither of those ODBC Drivers are currently installed. Access the following URL to download the Microsoft SQL Server 2008 R2 Native Client ODBC driver for x86: <a href="http://go.microsoft.com/fwlink/?LinkId=163712" target="_blank">http://go.microsoft.com/fwlink/?LinkId=163712</a>


Tak jak pisałem to prehistoryczna wersja, nie moge jej zmienić niestety.
Jak mogę wlączyć mssql i odbc? W php.ini są włączone .... nie wiem co może być nie tak w takim razie.
Go to the top of the page
+Quote Post
salfunglandyare
post 7.05.2015, 13:07:54
Post #12





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


wklej te sekcje php.ini po zmianach, jestes pewien, ze umiesciles dll w odpowiednim katalogu? sprawdzałeś logi po restarcie www?
Go to the top of the page
+Quote Post
PROGer
post 7.05.2015, 13:19:14
Post #13





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


Coś dziwnego ...

w php.ini mam:

  1. extension_dir = C:\php\ext



w logach Apacha wali mi komunikatami:

  1. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_mssql.dll' - The specified module could not be found.\r\n in Unknown on line 0
  2. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_msql.dll' - The specified module could not be found.\r\n in Unknown on line 0
  3. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_curl.dll' - The specified module could not be found.\r\n in Unknown on line 0
  4. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_ldap.dll' - The specified module could not be found.\r\n in Unknown on line 0
  5. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_mcrypt.dll' - The specified module could not be found.\r\n in Unknown on line 0
  6. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_mssql.dll' - The specified module could not be found.\r\n in Unknown on line 0
  7. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_mysql.dll' - The specified module could not be found.\r\n in Unknown on line 0
  8. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_mssql.dll' - The specified module could not be found.\r\n in Unknown on line 0
  9. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_mysql.dll' - The specified module could not be found.\r\n in Unknown on line 0
  10. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_oci8.dll' - The specified module could not be found.\r\n in Unknown on line 0
  11. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_oci8.dll' - The specified module could not be found.\r\n in Unknown on line 0
  12. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_sqlsrv_52_nts_vc6.dll' - The specified module could not be found.\r\n in Unknown on line 0
  13. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_sqlsrv_53_nts_vc6.dll' - The specified module could not be found.\r\n in Unknown on line 0
  14. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_sqlsrv_53_nts_vc9.dll' - The specified module could not be found.\r\n in Unknown on line 0
  15. PHP Warning: PHP Startup: pdo_sqlsrv: Unable to initialize module\nModule compiled with module API=20090626, debug=0, thread-safety=1\nPHP compiled with module API=20060613, debug=0, thread-safety=1\nThese options need to match\n in Unknown on line 0
  16. PHP Warning: PHP Startup: pdo_sqlsrv: Unable to initialize module\nModule compiled with module API=20090626, debug=0, thread-safety=1\nPHP compiled with module API=20060613, debug=0, thread-safety=1\nThese options need to match\n in Unknown on line 0
  17. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_sqlsrv_52_nts_vc6.dll' - The specified module could not be found.\r\n in Unknown on line 0
  18. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_sqlsrv_53_nts_vc6.dll' - The specified module could not be found.\r\n in Unknown on line 0
  19. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_sqlsrv_53_nts_vc9.dll' - The specified module could not be found.\r\n in Unknown on line 0
  20. PHP Warning: PHP Startup: sqlsrv: Unable to initialize module\nModule compiled with module API=20090626, debug=0, thread-safety=1\nPHP compiled with module API=20060613, debug=0, thread-safety=1\nThese options need to match\n in Unknown on line 0
  21. PHP Warning: PHP Startup: sqlsrv: Unable to initialize module\nModule compiled with module API=20090626, debug=0, thread-safety=1\nPHP compiled with module API=20060613, debug=0, thread-safety=1\nThese options need to match\n in Unknown on line 0
  22. PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\php\\ext\\php_pdo_odbc.dll' - The specified procedure could not be found.\r\n in Unknown on line 0


Ten post edytował PROGer 7.05.2015, 13:19:31
Go to the top of the page
+Quote Post
salfunglandyare
post 7.05.2015, 13:42:08
Post #14





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


A PHP instalowałeś z XAMMPa? DLLki rozszerzeń same z siebie wymagaja jeszcze dostępu do natywnych dlli (np php_odbc.dll) Masz je gdzieś? Ustaw do nich ścieżkę (PATH systemowa), a jeśli już masz ustawioną, to może... restart windows biggrin.gif Wiem, że głupie pytanie, ale restartowałeś windows po zainstalowaniu www/php?
Go to the top of the page
+Quote Post
PROGer
post 7.05.2015, 15:20:18
Post #15





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


Restartowałem Windowsa.
Serwer stawiałem bez użycia pakietów typu XAMPP. Osobno Apache i osobno PHP.
Nie wiem dlaczego te ścieżki nie są rozpoznawane .....
Go to the top of the page
+Quote Post
salfunglandyare
post 7.05.2015, 15:34:30
Post #16





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

Ostrzeżenie: (0%)
-----


Sprawdź zmienną systemową PATH, sprawdź czy powiązane z rozszerzeniami pliki DLL (nie chodzi o te z c:/php/ext) są dostępne przez ścieżki z tej zmiennej
Go to the top of the page
+Quote Post
PROGer
post 8.05.2015, 07:11:06
Post #17





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 30.04.2015

Ostrzeżenie: (0%)
-----


Znalazłem w sieci podobny problem tu:

  1. == Problem
  2.  
  3. Consider the following from an httpd.conf file...
  4.  
  5. LoadModule php5_module "E:/xyz/php/php5apache2_2.dll"
  6. PHPIniDir "E:/xyz/php"
  7.  
  8. ...which led to the dreaded...
  9.  
  10. PHP Warning: PHP Startup: Unable to load dynamic library 'E:\\xyz\\php\\ext\\php_mysql.dll' - The specified module could not be found.
  11.  
  12. Note, however, that PHP.exe apparently was found and executed php pages in Apache, but the MySQL functions therein failed.
  13.  
  14. == Solution
  15.  
  16. Because PHP dir was not in $PATH, php5apache2_2.dll failed to find php_mysql.dll (the only extension I enabled) during Apache 2.2 start.
  17.  
  18. == Caveat (!)
  19.  
  20. The BIG issue is that, setting $PATH in...
  21.  
  22. <desk icon>My Computer
  23. <rt click>Properties
  24. <tab>Advanced
  25. <button>Environment Variables
  26.  
  27. ...didn't export the $PATH change such that restarting the Apache service (in MMC) would pick it up. So I tested the working solution (adding PHP dir to $PATH), but it failed because of HOW I set it. It succeeded only when I REBOOTED after changing the $PATH. There may be an easier way that this, but I do not know it at present.
  28.  
  29. == Comment
  30.  
  31. Consider whether PHP dir should need to be in $PATH at all, when PHP.exe apparently was found and executes php pages in Apache, but php5apache2_2.dll failed to find whatever was needed to load the extensions. This should perhaps be addressed.
  32.  
  33. Note that on a WAMP installation (W2K,Apache,MySQL,PHP), only PHP is required in $PATH.


Ale u mnie w zmiennej PATH ścieżka do PHP jest ustawiona i prawidłowa! dry.gif dry.gif dry.gif

PATH
  1. C:\www\PHP\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\


PHPRC
  1. C:\www\PHP\


sprawdź czy powiązane z rozszerzeniami pliki DLL (nie chodzi o te z c:/php/ext) są dostępne przez ścieżki z tej zmiennej
Napisz proszę jak moge to sprawdzić ...

Ten post edytował PROGer 8.05.2015, 07:43:00
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.05.2019 - 00:15