Он,
Я пытаюсь несколько дней установить PDO_OCI на PHP7 на новый сервер.
Я когда-либо на другом сервере PDO_OCI, но на PHP 5.4, и все хорошо, не проблема с этой версией.
У меня есть сообщение:
:/home/pear/download/PDO_OCI-1.0# make
/bin/bash /home/pear/download/PDO_OCI-1.0/libtool --mode=compile cc -I -I.
-I/home/pear/download/PDO_OCI-1.0 -DPHP_ATOM_INC
-I/home/pear/download/PDO_OCI-1.0/include
-I/home/pear/download/PDO_OCI-1.0/main
-I/home/pear/download/PDO_OCI-1.0
-I/usr/include/php/20151012
-I/usr/include/php/20151012/main
-I/usr/include/php/20151012/TSRM
-I/usr/include/php/20151012/Zend
-I/usr/include/php/20151012/ext
-I/usr/include/php/20151012/ext/date/lib
-I/usr/lib/oracle/instantclient/include/oracle/12.1/client -DHAVE_CONFIG_H -g -O2 -c
/home/pear/download/PDO_OCI-1.0/oci_driver.c -o oci_driver.lo
libtool: compile: cc -I -I.
-I/home/pear/download/PDO_OCI-1.0 -DPHP_ATOM_INC
-I/home/pear/download/PDO_OCI-1.0/include
-I/home/pear/download/PDO_OCI-1.0/main
-I/home/pear/download/PDO_OCI-1.0
-I/usr/include/php/20151012
-I/usr/include/php/20151012/main
-I/usr/include/php/20151012/TSRM
-I/usr/include/php/20151012/Zend
-I/usr/include/php/20151012/ext
-I/usr/include/php/20151012/ext/date/lib
-I/usr/lib/oracle/instantclient/include/oracle/12.1/client -DHAVE_CONFIG_H -g -O2 -c
/home/pear/download/PDO_OCI-1.0/oci_driver.c -fPIC -DPIC -o .libs/oci_driver.o
/home/pear/download/PDO_OCI-1.0/oci_driver.c: In function 'pdo_oci_fetch_error_func':
/home/pear/download/PDO_OCI-1.0/oci_driver.c:51:3: error:
too many arguments to function 'add_next_index_string' add_next_index_string(info, einfo->errmsg, 1);
In file included from /usr/include/php/20151012/main/php.h:39:0,
from /home/pear/download/PDO_OCI-1.0/oci_driver.c:25:
/usr/include/php/20151012/Zend/zend_API.h:432:14: note: declared here
ZEND_API int add_next_index_string(zval *arg, const char *str);
^
/home/pear/download/PDO_OCI-1.0/oci_driver.c: In function 'oci_handle_preparer':
/home/pear/download/PDO_OCI-1.0/oci_driver.c:238:59: warning: passing argument 5 of 'pdo_parse_params' from incompatible pointer type
ret = pdo_parse_params(stmt, (char*)sql, sql_len, &nsql, &nsql_len TSRMLS_CC);
^
In file included from /home/pear/download/PDO_OCI-1.0/oci_driver.c:29:0:
/usr/include/php/20151012/ext/pdo/php_pdo_driver.h:678:13: note: expected 'size_t *' but argument is of type 'int *'
PDO_API int pdo_parse_params(pdo_stmt_t *stmt, char *inquery, size_t inquery_len,
^
/home/pear/download/PDO_OCI-1.0/oci_driver.c: At top level:
/home/pear/download/PDO_OCI-1.0/oci_driver.c:411:2: warning: initialization from incompatible pointer type
oci_handle_preparer,
^
/home/pear/download/PDO_OCI-1.0/oci_driver.c:411:2: warning: (near initialization for 'oci_methods.preparer')
/home/pear/download/PDO_OCI-1.0/oci_driver.c:412:2: warning: initialization from incompatible pointer type
oci_handle_doer,
^
/home/pear/download/PDO_OCI-1.0/oci_driver.c:412:2: warning: (near initialization for 'oci_methods.doer')
/home/pear/download/PDO_OCI-1.0/oci_driver.c:413:2: warning: initialization from incompatible pointer type
oci_handle_quoter,
^
/home/pear/download/PDO_OCI-1.0/oci_driver.c:413:2: warning: (near initialization for 'oci_methods.quoter')
Makefile:198: recipe for target 'oci_driver.lo' failed
make: *** [oci_driver.lo] Error 1
Моя конфигурация:
Сервер Linux Система Linux 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) x86_64
PHP PHP Версия 7.0.4-1 ~ dotdeb + 8.1
PDO драйверы mysql
Поддержка OCI8 включена (работает).
Я прочитал PDO_OCI это включить на PHP7 https://github.com/php/php-src/tree/PHP-7.0.7/ext/pdo_oci
а как его активировать?
Мой код в PHP 5.4 не работает на этом сервере PHP7.
У кого-нибудь есть решение?
С уважением
Скачать этот источник php
http://us1.php.net/get/php-7.0.27.tar.bz2/from/a/mirror
скопируйте pdo_oci в tmp
$ sudo cp -r php-7.0.27/ext/pdo_oci /tmp
$ sudo cd /tmp/pdo_oci
выполните следующую команду:
введите код сюда
$ sudo phpize
$ sudo make
$ sudo make install
Finall, создавать и связывать файлы
$ sudo touch /etc/php/7.0/mods-available/pdo_oci.ini
$sudo echo extension=pdo_oci.so' > /etc/php/7.0/mods-available/pdo_oci.ini
$ sudo ln -s /etc/php/7.0/mods-available/pdo_oci.ini /etc/php/7.0/apache2/conf.d/20-pdo_oci.ini
Перезапустите apache2
Это расширение был заброшен и не будет компилироваться. Зачем? API PHP значительно изменился в версии 7; ошибка, которую вы видите, указывает, что сигнатуры внутренних функций изменились:
/home/pear/download/PDO_OCI-1.0/oci_driver.c: In function 'pdo_oci_fetch_error_func':
/home/pear/download/PDO_OCI-1.0/oci_driver.c:51:3: error:
too many arguments to function 'add_next_index_string' add_next_index_string(info, einfo->errmsg, 1);
Как это исправить, зависит от того, как вы установили PHP. Я надеюсь, что вы скомпилировали его сами, так как вы делаете то же самое для расширений. Если так, просто перекомпилировать используя --with-pdo-oci=DIR
где DIR
домашний каталог Oracle
Если вы установили из пакета через apt
У вас есть несколько вариантов. 1) посмотреть, сможете ли вы получить драйвер PDO-OCI таким же образом (не похоже, что он есть). 2) удалить ваши пакеты и сделать все из исходного кода. 3) Попробуйте сторонний водитель.