2017-09-21 1 views
0

Je reçois Caught exception: could not find driver dans monextensions DOP not found

function connect_to_server() 
    { 
     $serverName = DB_HOST; 
     $this->_connection = new PDO("odbc:Driver={SQL Server};Server=$serverName,1433; Database=".DB_NAME.";",DB_USER,DB_PASS); 
     // $this->_connection = new PDO("sqlsrv:Server=192.168.1.97;Server=$serverName,1433; Database=".DB_NAME.";",DB_USER,DB_PASS); 

     if(!$this->_connection) 
     { 
      die(print_r(sqlsrv_errors(), true)); 
     } 
     else 
     { 
      return $this->_connection; 
     } 
    } 

Quand je l'ai à l'intérieur attraper essayer comme

try { 
      $this->_con = $this->connect_to_server() . "\n"; 
     } catch (PDOException $e) { 
      echo 'Caught exception: ', $e->getMessage(), "\n"; 
     } 

donc je voulais installer le pilote à partir here je suis à l'étape yum -y install php-pecl-memcache lorsque Je cours dans la commande je reçois

Error: php71w-common conflicts with php-common-5.4.16-42.el7.x86_64 
You could try using --skip-broken to work around the problem 
You could try running: rpm -Va --nofiles --nodigest 

Alors j'ai essayé de trouver la solution pour cela et trouvé this Donc, je cours yum install php70w-mysqli mais il a retourné la même erreur.

What is the correct way to install these drivers.

je peux courir dans mon local parce que je ces:

extension=php_bz2.dll 
extension=php_curl.dll 
extension=php_fileinfo.dll 
extension=php_gd2.dll 
extension=php_gettext.dll 
;extension=php_gmp.dll 
;extension=php_intl.dll 
;extension=php_imap.dll 
;extension=php_interbase.dll 
;extension=php_ldap.dll 
extension=php_mbstring.dll 
extension=php_exif.dll  ; Must be after mbstring as it depends on it 
extension=php_mysql.dll 
extension=php_mysqli.dll 
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client 
;extension=php_openssl.dll 
;extension=php_pdo_firebird.dll 
extension=php_pdo_mysql.dll 
;extension=php_pdo_oci.dll 
extension=php_pdo_odbc.dll 
;extension=php_pdo_pgsql.dll 
extension=php_pdo_sqlite.dll 
;extension=php_pgsql.dll 
;extension=php_shmop.dll 

Mais dans mon serveur, je n'ai pas ces derniers dans php.ini.

Je n'ai que cette

; If you wish to have an extension loaded automatically, use the following 
; syntax: 
; 
; extension=modulename.extension 
; 
; For example, on Windows: 
; 
; extension=msql.dll 
; 
; ... or under UNIX: 
; 
; extension=msql.so 
; 
; ... or with a path: 
; 
; extension=/path/to/extension/msql.so 
; 
; If you only provide the name of the extension, PHP will look for it in its 
; default extension directory. 

MISE À JOUR

essayé d'utiliser yum -y install php_odbc

mais nous avons eu

Loaded plugins: fastestmirror 
Repository packages-microsoft-com-prod is listed more than once in the configuration 
Loading mirror speeds from cached hostfile 
* base: mirror.pregi.net 
* epel: mirror.pregi.net 
* extras: mirror.pregi.net 
* updates: mirror.pregi.net 
* webtatic: sp.repo.webtatic.com 
No package php_odbc available. 
Error: Nothing to do 

Wher je lance: php -i | grep AOP

je reçois:

PDO 
PDO support => enabled 
PDO drivers => mysql, sqlite 
PDO Driver for MySQL => enabled 
PDO Driver for SQLite 3.x => enabled 
+0

Avez-vous essayé de redémarrer apache ou php-fpm? –

+0

oui en utilisant 'systemctl restart httpd.service' dans localhost j'utilise Windows OS dans le serveur c'est centOS7. dans 'php -i | grep PDO' devrait avoir 'odbc' non? @LawrenceCherone – Martin

Répondre

0

Tout d'abord, les blocs directive d'extension dans votre environnement ne sont pas work.The raison est votre système ne peut pas trouver les fichiers d'extension. Dans le php.ini doc, il a un exemple:

For example, on Windows: 
extension=msql.dll 

under UNIX: 
extension=msql.so 

qui indique les configurations de différence entre Windows et Unix (Linux) .Dans votre système, le php.ini sur le bloc d'extension doit comme ceci:

extension_dir

extesion_file

en un mot,

dans Windows, les fichiers d'extensions est en /ext/, et la queue avec dll,

dans Linux, les fichiers d'extensions est prefix/lib/php/, et la queue avec so.

+0

quand je lance 'yum -y installer php-odbc-5.4.16-42.el7.x86_64.rpm' Je reçois 'Erreur: php71w-conflits communs avec php-common-5.4.16-42.el7.x86_64 Vous pourriez essayer d'utiliser --skip-broken pour contourner le problème Vous pourriez essayer de courir: rpm -Va - -nofiles --nodigest' *** comment réparer cette erreur? il continue à apparaître *** – Martin

+0

comme son sens littéral dit, quand vous installez 'php-odbc-5.4.16-42.el7.x86_64.rpm', le paquet' rpm' rencontre une erreur de dépendance, et vous pouvez essayer ' yum -y installer l'installation php-odbc-5.4.16-42.el7.x86_64.rpm --skip-broken '. – shanechiu

+0

J'ai dit 'Paquets ignorés en raison de problèmes de dépendance: libzip-0.10.1-8.el7.x86_64 à partir de base php-common-5.4.16-42.el7.x86_64 à partir de base php-odbc-5.4.16- 42.el7.x86_64 de /php-odbc-5.4.16-42.el7.x86_64 php-pdo-5.4.16-42.el7.x86_64 à partir de la base 'Je suppose qu'il n'est pas installé car il a été ignoré le odbc – Martin