php точка входа в процедуру ocistmtgetnextresult не найдена в библиотеке dll oci.dll

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "PHP & Oracle", создана пользователем azsx, 25 май 2017.

  1. azsx

    azsx Новичок

    Сообщения:
    6
    Ваш город:
    Ангарск, Иркутская область, Россия
    Address:
    Angarsk, Russia
    Country:
    Location on Map:
    Скачал на win 7 64; php 7.1 64. Расскоментировал модуль extension=php_oci8_12c.dll
    Теперь не работает даже php -v выводит диалоговое окно в котором написано:
    ------
    php точка входа в процедуру ocistmtgetnextresult не найдена в библиотеке dll oci.dll
    ------
    На этом компьютере стоит sql navigator который подключается по сети к бд oracle 11g, которая находиться в сети. На локальном компьютере именно oci.dll на диске c нет.
    Скажите, пожалуйста, почему не работает модуль и как его запустить?
     
  2. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.947
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
  3. azsx

    azsx Новичок

    Сообщения:
    6
    Ваш город:
    Ангарск, Иркутская область, Россия
    Address:
    Angarsk, Russia
    Country:
    Location on Map:
    скачал Oracle Instant Client, скопировал все файлы из него в system32. Абсолютно никак не помогло.
     
  4. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Это где вы в PHP нашли такой каталог?…
     
  5. azsx

    azsx Новичок

    Сообщения:
    6
    Ваш город:
    Ангарск, Иркутская область, Россия
    Address:
    Angarsk, Russia
    Country:
    Location on Map:
    Этот каталог я нашёл в windows. Скачал все файлы из Oracle Instant Client в каталог php и каталог php\ext.
    Ошибка та же.
     
  6. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Вот как с такими людьми общаться?…

    НЕ НАДО качать "все файлы".
    Надо скачать один - Oracle Instant Client Basic Lite под твою версию (32 или 64).

    НЕ НАДО "класть все файлы".
    Надо взять ОДИН файл - OCI.dll, и положить его в каталог с php.exe.

    И да, надо было раскомментировать не php_oci8_12c.dll а php_pdo_oci.dll …
     
    azsx нравится это.
  7. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Код:
    --- "C:\\usr\\sbin\\php-7.1\\php-cli.out"    2017-05-13 19:38:46.504111800 +0300
    +++ -    2017-05-25 17:18:34.975959900 +0300
    @@ -9,8 +9,8 @@
     Server API => Command Line Interface
     Virtual Directory Support => enabled
     Configuration File (php.ini) Path => C:\Windows
    -Loaded Configuration File => C:\usr\sbin\php-7.1.5\php-cli.ini
    -Scan this dir for additional .ini files => C:\usr\sbin\php-7.1-extra\conf.d;C:\usr\sbin\php-7.1.5\conf.d
    +Loaded Configuration File => C:\usr\sbin\php-7.1\php-cli.ini
    +Scan this dir for additional .ini files => C:\usr\sbin\php-7.1-extra\conf.d;C:\usr\sbin\php-7.1\conf.d
     Additional .ini files parsed => C:\usr\sbin\php-7.1-extra\conf.d\00-core.ini,
     C:\usr\sbin\php-7.1-extra\conf.d\00-date.ini,
     C:\usr\sbin\php-7.1-extra\conf.d\00-extensions.ini,
    @@ -34,6 +34,7 @@
     C:\usr\sbin\php-7.1-extra\conf.d\lua.ini,
     C:\usr\sbin\php-7.1-extra\conf.d\mailparse.ini,
     C:\usr\sbin\php-7.1-extra\conf.d\mysql.ini,
    +C:\usr\sbin\php-7.1-extra\conf.d\oci.ini,
     C:\usr\sbin\php-7.1-extra\conf.d\openssl.ini,
     C:\usr\sbin\php-7.1-extra\conf.d\phar.ini,
     C:\usr\sbin\php-7.1-extra\conf.d\rrd.ini,
    @@ -657,13 +658,17 @@
     PDO
     
     PDO support => enabled
    -PDO drivers => mysql, sqlite
    +PDO drivers => mysql, oci, sqlite
     
     pdo_mysql
     
     PDO Driver for MySQL => enabled
     Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: b396954eeb2d1d9ed7902b8bae237b287f21ad9e $
     
    +PDO_OCI
    +
    +PDO Driver for OCI 8 and later => enabled
    +
     pdo_sqlite
     
     PDO Driver for SQLite 3.x => enabled
    
     
  8. azsx

    azsx Новичок

    Сообщения:
    6
    Ваш город:
    Ангарск, Иркутская область, Россия
    Address:
    Angarsk, Russia
    Country:
    Location on Map:
    Спасибо большое. Диалоговое окно исчезло. Теперь у меня 2 вопроса
    Код:
    if ($c=OCILogon("test", "test", "192.168.0.10(это LAN_IP):1521/sales:SERVICE_NAME")) {
      echo "Successfully connected to Oracle.\n";
      OCILogoff($c);
    } else {
      $err = OCIError();
      echo "Oracle Connect Error " . $err[text];
    }
    
    не работает. Какие параметры я напутал?
    -------------
    Код:
    $tns = "
    (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = SERVICE_NAME)
        )
      )
           ";
    $db_username = "test";
    $db_password = "test";
    try{
        $conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
    }catch(PDOException $e){
        echo ($e->getMessage());
    }
    
    выводит ошибку
    SQLSTATE[]: pdo_oci_handle_factory: <<Unknown>> (ext\pdo_oci\oci_driver.c:640)
    но почему? Вроде все драйверы загрузил. Из phpinfo

    Код:
    PDO
    
    PDO support => enabled
    PDO drivers => oci
    
    PDO_OCI
    
    PDO Driver for OCI 8 and later => enabled
    
     
  9. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
  10. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.947
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Забудь про OCI*, используй PDO.

    В документации написано как коннектиться, у тебя явно не так ведь.
     
  11. azsx

    azsx Новичок

    Сообщения:
    6
    Ваш город:
    Ангарск, Иркутская область, Россия
    Address:
    Angarsk, Russia
    Country:
    Location on Map:
    Вариант с pdo. В мануале я прочитал "Чтобы воспользоваться возможностями PDO, необходимо использовать соответствующий конкретной базе данныхPDO драйвер." pdo_oci http://php.net/manual/ru/ref.pdo-oci.php там пример:
    Код:
    $tns = "
    (DESCRIPTION =
       (ADDRESS_LIST =
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
       )
       (CONNECT_DATA =
         (SERVICE_NAME = MY_SERVICE_NAME)
       )
      )
          ";
    $db_username = "test";
    $db_password = "test";
    try{
       $conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
    }catch(PDOException $e){
       echo ($e->getMessage());
    }
    
    Который мне выводит:
    SQLSTATE[]: pdo_oci_handle_factory: <<Unknown>> (ext\pdo_oci\oci_driver.c:640)
    из чего я делаю вывод, что опять какой то драйвер под pdo не загружен.
    Я не прав?
    ----
    В то же время обычный oci уже работает, но под него я не могу найти как параметры написать правильно (мануала нет).
     
  12. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Я же, ***, дал ссылку, куда читать.
    Что за *** ты изобретаешь?…

    oci:dbname=//192.168.0.10:1521/mydatabase
     
  13. azsx

    azsx Новичок

    Сообщения:
    6
    Ваш город:
    Ангарск, Иркутская область, Россия
    Address:
    Angarsk, Russia
    Country:
    Location on Map:
    Никак не получается, так как почему-то нет драйвера
    Код:
    <?php
    $tns = new PDO('oci:dbname=//192.168.0.10:1521/SERVICE_NAME', 'test', 'test');
    ?>
    
    
    c:\php>php 1.php
    PHP Fatal error:  Uncaught PDOException: SQLSTATE[]: pdo_oci_handle_factory: <<
    nknown>> (ext\pdo_oci\oci_driver.c:640) in C:\php\1.php:36
    Stack trace:
    #0 C:\php\1.php(36): PDO->__construct('oci:dbname=//17...', 'test', 'test')
    #1 {main}
      thrown in C:\php\1.php on line 36
    
    Fatal error: Uncaught PDOException: SQLSTATE[]: pdo_oci_handle_factory: <<Unkno
    n>> (ext\pdo_oci\oci_driver.c:640) in C:\php\1.php:36
    Stack trace:
    #0 C:\php\1.php(36): PDO->__construct('oci:dbname=//17...', 'test', 'test')
    #1 {main}
      thrown in C:\php\1.php on line 36
    
    c:\php>