Docker pdo_oci不可用

问题描述 投票:0回答:1

我正在尝试创建docker容器,从PHP应用程序连接到Oracle db。这是我使用的Dockerfile:

FROM php:7.4-apache

ENV APACHE_DOCUMENT_ROOT=/var/www/html/

RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf # stack overflow thinks this is comment */
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf # stack overflow thinks this is comment */

RUN apt-get update && apt-get install -qqy git unzip libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libaio1 wget && apt-get clean autoclean && apt-get autoremove --yes &&  rm -rf /var/lib/{apt,dpkg,cache,log}/

# composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN mkdir /opt/oracle \
    && cd /opt/oracle

ADD instantclient-basic-linux.x64-19.5.0.0.0dbru.zip /opt/oracle
ADD instantclient-sdk-linux.x64-19.5.0.0.0dbru.zip /opt/oracle

# Install Oracle Instantclient
RUN  unzip /opt/oracle/instantclient-basic-linux.x64-19.5.0.0.0dbru.zip -d /opt/oracle \
    && unzip /opt/oracle/instantclient-sdk-linux.x64-19.5.0.0.0dbru.zip -d /opt/oracle \
#    && ln -s /opt/oracle/instantclient_19_5/libclntsh.so.19.5 /opt/oracle/instantclient_19_5/libclntsh.so \
#    && ln -s /opt/oracle/instantclient_19_5/libclntshcore.so.19.5 /opt/oracle/instantclient_19_5/libclntshcore.so \
#    && ln -s /opt/oracle/instantclient_19_5/libocci.so.19.5 /opt/oracle/instantclient_19_5/libocci.so \
    && rm -rf /opt/oracle/*.zip # stack overflow thinks this is comment */

ENV LD_LIBRARY_PATH  /opt/oracle/instantclient_19_5:${LD_LIBRARY_PATH}

# Install Oracle extensions
RUN echo 'instantclient,/opt/oracle/instantclient_19_5/' | pecl install oci8 \
      && docker-php-ext-enable \
               oci8 \
       && docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/opt/oracle/instantclient_19_5,19.5 \
       && docker-php-ext-install \
               pdo_oci

# git
RUN apt-get update && apt-get install -y git
RUN apt-get install -y \
        freetds-bin \
        freetds-dev \
        freetds-common \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng-dev \
        zlib1g-dev \
        libxml2-dev \
        libzip-dev \
        libonig-dev \
        sendmail \
        graphviz

RUN ln -s /usr/lib/x86_64-linux-gnu/libsybdb.a /usr/lib/
# RUN ln -s /usr/lib/ x86_64-pc-linux-gnu/libsybdb.a /usr/lib/

RUN  docker-php-ext-install \
                iconv \
                mbstring \
                intl \
                gd \
                mysqli \
                pdo_mysql \
                pdo_dblib \
                sockets \
                zip \
                pcntl \
        && docker-php-ext-enable \
                oci8 \
                pdo_oci

RUN a2enmod rewrite

# xdebug
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug

COPY ./src /var/www/html/
RUN chmod 0777 /var/www/html/

# addrs
RUN mkdir -p /var/www/html/application/cache
RUN chown www-data:www-data /var/www/html/application/cache

RUN mkdir -p /var/www/html/application/logs
RUN chown www-data:www-data /var/www/html/application/logs

#RUN composer update
#RUN composer install

EXPOSE 80
EXPOSE 3306


docker-compose build正确执行并创建了容器。 PhpInfo看起来像这样:

phpinfo()
PHP Version => 7.4.2

System => Linux ccp2 4.19.76-linuxkit #1 SMP Thu Oct 17 19:31:58 UTC 2019 x86_64
Build Date => Feb  1 2020 19:38:05
Configure Command =>  './configure'  '--build=x86_64-linux-gnu' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-pdo-sqlite=/usr' '--with-sqlite3=/usr' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--with-pear' '--with-libdir=lib/x86_64-linux-gnu' '--with-apxs2' '--disable-cgi' 'build_alias=x86_64-linux-gnu'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/etc/php
Loaded Configuration File => (none)
Scan this dir for additional .ini files => /usr/local/etc/php/conf.d
Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-intl.ini,
/usr/local/etc/php/conf.d/docker-php-ext-mysqli.ini,
/usr/local/etc/php/conf.d/docker-php-ext-oci8.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_dblib.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_oci.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sockets.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini,
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini

PHP API => 20190902
PHP Extension => 20190902
Zend Extension => 320190902
Zend Extension Build => API320190902,NTS
PHP Extension Build => API20190902,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => enabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring
IPv6 Support => enabled
DTrace Support => disabled

Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2, tlsv1.3
Registered Stream Filters => zlib.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk

This program makes use of the Zend Scripting Language Engine:
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v2.9.2, Copyright (c) 2002-2020, by Derick Rethans


 _______________________________________________________________________


Configuration

Core

PHP Version => 7.4.2

Directive => Local Value => Master Value
allow_url_fopen => On => On
allow_url_include => Off => Off
arg_separator.input => & => &
arg_separator.output => & => &
auto_append_file => no value => no value
auto_globals_jit => On => On
auto_prepend_file => no value => no value
browscap => no value => no value
default_charset => UTF-8 => UTF-8
default_mimetype => text/html => text/html
disable_classes => no value => no value
disable_functions => no value => no value
display_errors => STDOUT => STDOUT
display_startup_errors => Off => Off
doc_root => no value => no value
docref_ext => no value => no value
docref_root => no value => no value
enable_dl => On => On
enable_post_data_reading => On => On
error_append_string => no value => no value
error_log => no value => no value
error_prepend_string => no value => no value
error_reporting => no value => no value
expose_php => On => On
extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20190902 => /usr/local/lib/php/extensions/no-debug-non-zts-20190902
file_uploads => On => On
hard_timeout => 2 => 2
highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font>
highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font>
highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font>
highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font>
highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font>
html_errors => Off => Off
ignore_repeated_errors => Off => Off
ignore_repeated_source => Off => Off
ignore_user_abort => Off => Off
implicit_flush => On => On
include_path => .:/usr/local/lib/php => .:/usr/local/lib/php
input_encoding => no value => no value
internal_encoding => no value => no value
log_errors => Off => Off
log_errors_max_len => 1024 => 1024
mail.add_x_header => Off => Off
mail.force_extra_parameters => no value => no value
mail.log => no value => no value
max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 64 => 64
max_input_time => -1 => -1
max_input_vars => 1000 => 1000
memory_limit => 128M => 128M
open_basedir => no value => no value
output_buffering => 0 => 0
output_encoding => no value => no value
output_handler => no value => no value
post_max_size => 8M => 8M
precision => 14 => 14
realpath_cache_size => 4096K => 4096K
realpath_cache_ttl => 120 => 120
register_argc_argv => On => On
report_memleaks => On => On
report_zend_debug => Off => Off
request_order => no value => no value
sendmail_from => no value => no value
sendmail_path =>  -t -i  =>  -t -i 
serialize_precision => -1 => -1
short_open_tag => On => On
SMTP => localhost => localhost
smtp_port => 25 => 25
sys_temp_dir => no value => no value
syslog.facility => LOG_USER => LOG_USER
syslog.filter => no-ctrl => no-ctrl
syslog.ident => php => php
track_errors => Off => Off
unserialize_callback_func => no value => no value
upload_max_filesize => 2M => 2M
upload_tmp_dir => no value => no value
user_dir => no value => no value
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
variables_order => EGPCS => EGPCS
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
zend.assertions => 1 => 1
zend.detect_unicode => On => On
zend.enable_gc => On => On
zend.exception_ignore_args => Off => Off
zend.multibyte => Off => Off
zend.script_encoding => no value => no value
zend.signal_check => Off => Off

ctype

ctype functions => enabled

curl

cURL support => enabled
cURL Information => 7.64.0
Age => 4
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => Yes
HTTPS_PROXY => Yes
MULTI_SSL => No
BROTLI => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/1.1.1d
ZLib Version => 1.2.11
libSSH Version => libssh2/1.8.0

Directive => Local Value => Master Value
curl.cainfo => no value => no value

date

date/time support => enabled
timelib version => 2018.03
"Olson" Timezone Database Version => 2019.3
Timezone Database => internal
Default timezone => UTC

Directive => Local Value => Master Value
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.583333 => 90.583333
date.sunset_zenith => 90.583333 => 90.583333
date.timezone => no value => no value

dom

DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.9.4
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled

fileinfo

fileinfo support => enabled
libmagic => 537

filter

Input Validation and Filtering => enabled

Directive => Local Value => Master Value
filter.default => unsafe_raw => unsafe_raw
filter.default_flags => no value => no value

ftp

FTP support => enabled
FTPS support => enabled

gd

GD Support => enabled
GD Version => bundled (2.1.0 compatible)
GIF Read Support => enabled
GIF Create Support => enabled
PNG Support => enabled
libPNG Version => 1.6.36
WBMP Support => enabled
XBM Support => enabled
BMP Support => enabled
TGA Read Support => enabled

Directive => Local Value => Master Value
gd.jpeg_ignore_warning => 1 => 1

hash

hash support => enabled
Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b crc32c fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 

MHASH support => Enabled
MHASH API Version => Emulated Support

iconv

iconv support => enabled
iconv implementation => glibc
iconv library version => 2.28

Directive => Local Value => Master Value
iconv.input_encoding => no value => no value
iconv.internal_encoding => no value => no value
iconv.output_encoding => no value => no value

intl

Internationalization support => enabled
ICU version => 63.1
ICU Data version => 63.1
ICU TZData version => 2018e
ICU Unicode version => 11.0

Directive => Local Value => Master Value
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

json

json support => enabled

libxml

libXML support => active
libXML Compiled Version => 2.9.4
libXML Loaded Version => 20904
libXML streams => enabled

mbstring

Multibyte Support => enabled
Multibyte string engine => libmbfl
HTTP input encoding translation => disabled
libmbfl version => 1.3.2

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Multibyte (japanese) regex support => enabled
Multibyte regex (oniguruma) version => 6.9.1

Directive => Local Value => Master Value
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.func_overload => 0 => 0
mbstring.http_input => no value => no value
mbstring.http_output => no value => no value
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
mbstring.internal_encoding => no value => no value
mbstring.language => neutral => neutral
mbstring.regex_retry_limit => 1000000 => 1000000
mbstring.regex_stack_limit => 100000 => 100000
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value

mysqli

MysqlI Support => enabled
Client API library version => mysqlnd 7.4.2
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off

mysqlnd

mysqlnd => enabled
Version => mysqlnd 7.4.2
Compression => supported
core SSL => supported
extended SSL => supported
Command buffer size => 4096
Read buffer size => 32768
Read timeout => 86400
Collecting statistics => Yes
Collecting memory statistics => No
Tracing => n/a
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password
API Extensions => mysqli,pdo_mysql

oci8

OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.2.0
Oracle Run-time Client Library Version => 19.5.0.0.0
Oracle Compile-time Instant Client Version => 19.5

Directive => Local Value => Master Value
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20

Statistics =>  
Active Persistent Connections => 0
Active Connections => 0

pcntl support => enabled

pcre

PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 10.33 2019-04-16
PCRE Unicode Version => 11.0.0
PCRE JIT Support => enabled
PCRE JIT Target => x86 64bit (little endian + unaligned)

Directive => Local Value => Master Value
pcre.backtrack_limit => 1000000 => 1000000
pcre.jit => 1 => 1
pcre.recursion_limit => 100000 => 100000

PDO

PDO support => enabled
PDO drivers => sqlite, dblib, mysql, oci

pdo_dblib

PDO Driver for FreeTDS/Sybase DB-lib => enabled
Flavour => freetds

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 7.4.2

Directive => Local Value => Master Value
pdo_mysql.default_socket => no value => no value

PDO_OCI

PDO Driver for OCI 8 and later => enabled

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.27.2

posix

POSIX support => enabled

readline

Readline Support => enabled
Readline library => EditLine wrapper

Directive => Local Value => Master Value
cli.pager => no value => no value
cli.prompt => \b \>  => \b \> 

Reflection

Reflection => enabled

sockets

Sockets Support => enabled

sodium

sodium support => enabled
libsodium headers version => 1.0.17
libsodium library version => 1.0.17

SPL

SPL support => enabled
Interfaces => OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

sqlite3

SQLite3 support => enabled
SQLite Library => 3.27.2

Directive => Local Value => Master Value
sqlite3.defensive => 1 => 1
sqlite3.extension_dir => no value => no value

standard

Dynamic Library Support => enabled
Path to sendmail =>  -t -i 

Directive => Local Value => Master Value
assert.active => 1 => 1
assert.bail => 0 => 0
assert.callback => no value => no value
assert.exception => 0 => 0
assert.quiet_eval => 0 => 0
assert.warning => 1 => 1
auto_detect_line_endings => 0 => 0
default_socket_timeout => 60 => 60
from => no value => no value
session.trans_sid_hosts => no value => no value
session.trans_sid_tags => a=href,area=href,frame=src,form= => a=href,area=href,frame=src,form=
unserialize_max_depth => 4096 => 4096
url_rewriter.hosts => no value => no value
url_rewriter.tags => form= => form=
user_agent => no value => no value

tokenizer

Tokenizer Support => enabled

xdebug

xdebug support => enabled
Version => 2.9.2
Support Xdebug on Patreon, GitHub, or as a business: https://xdebug.org/support

Debugger => enabled
IDE Key =>  

Additional Modules

Module Name

Environment

Variable => Value
HOSTNAME => ccp2
APACHE_DOC_ROOT => /var/www/html/
PHP_VERSION => 7.4.2
APACHE_CONFDIR => /etc/apache2
PHP_MD5 =>  
PHP_INI_DIR => /usr/local/etc/php
GPG_KEYS => 42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312
PHP_LDFLAGS => -Wl,-O1 -Wl,--hash-style=both -pie
PWD => /var/www/html/src
APACHE_DOCUMENT_ROOT => /var/www/html/
HOME => /root
PHP_SHA256 => 98284deac017da0d426117ecae7599a1f1bf62ae3911e8bc16c4403a8f4bdf13
PHPIZE_DEPS => autoconf         dpkg-dev        file        g++         gcc         libc-dev        make        pkg-config      re2c
TERM => xterm
PHP_URL => https://www.php.net/get/php-7.4.2.tar.xz/from/this/mirror
PHP_EXTRA_CONFIGURE_ARGS => --with-apxs2 --disable-cgi
SHLVL => 1
PHP_CFLAGS => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
LD_LIBRARY_PATH => /opt/oracle/instantclient_19_5:
APACHE_ENVVARS => /etc/apache2/envvars
PATH => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PHP_EXTRA_BUILD_DEPS => apache2-dev
PHP_ASC_URL => https://www.php.net/get/php-7.4.2.tar.xz.asc/from/this/mirror
PHP_CPPFLAGS => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
_ => /usr/local/bin/php
OLDPWD => /var/www/html
ORACLE_HOME => /opt/oracle/instantclient_19_5

PHP Variables

Variable => Value
$_SERVER['HOSTNAME'] => ccp2
$_SERVER['APACHE_DOC_ROOT'] => /var/www/html/
$_SERVER['PHP_VERSION'] => 7.4.2
$_SERVER['APACHE_CONFDIR'] => /etc/apache2
$_SERVER['PHP_MD5'] => 
$_SERVER['PHP_INI_DIR'] => /usr/local/etc/php
$_SERVER['GPG_KEYS'] => 42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312
$_SERVER['PHP_LDFLAGS'] => -Wl,-O1 -Wl,--hash-style=both -pie
$_SERVER['PWD'] => /var/www/html/src
$_SERVER['APACHE_DOCUMENT_ROOT'] => /var/www/html/
$_SERVER['HOME'] => /root
$_SERVER['PHP_SHA256'] => 98284deac017da0d426117ecae7599a1f1bf62ae3911e8bc16c4403a8f4bdf13
$_SERVER['PHPIZE_DEPS'] => autoconf         dpkg-dev        file        g++         gcc         libc-dev        make        pkg-config      re2c
$_SERVER['TERM'] => xterm
$_SERVER['PHP_URL'] => https://www.php.net/get/php-7.4.2.tar.xz/from/this/mirror
$_SERVER['PHP_EXTRA_CONFIGURE_ARGS'] => --with-apxs2 --disable-cgi
$_SERVER['SHLVL'] => 1
$_SERVER['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_SERVER['LD_LIBRARY_PATH'] => /opt/oracle/instantclient_19_5:
$_SERVER['APACHE_ENVVARS'] => /etc/apache2/envvars
$_SERVER['PATH'] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$_SERVER['PHP_EXTRA_BUILD_DEPS'] => apache2-dev
$_SERVER['PHP_ASC_URL'] => https://www.php.net/get/php-7.4.2.tar.xz.asc/from/this/mirror
$_SERVER['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_SERVER['_'] => /usr/local/bin/php
$_SERVER['OLDPWD'] => /var/www/html
$_SERVER['ORACLE_HOME'] => /opt/oracle/instantclient_19_5
$_SERVER['PHP_SELF'] => 
$_SERVER['SCRIPT_NAME'] => 
$_SERVER['SCRIPT_FILENAME'] => 
$_SERVER['PATH_TRANSLATED'] => 
$_SERVER['DOCUMENT_ROOT'] => 
$_SERVER['REQUEST_TIME_FLOAT'] => 1580987666.6023
$_SERVER['REQUEST_TIME'] => 1580987666
$_SERVER['argv'] => Array
(
)

$_SERVER['argc'] => 0
$_ENV['HOSTNAME'] => ccp2
$_ENV['APACHE_DOC_ROOT'] => /var/www/html/
$_ENV['PHP_VERSION'] => 7.4.2
$_ENV['APACHE_CONFDIR'] => /etc/apache2
$_ENV['PHP_MD5'] => 
$_ENV['PHP_INI_DIR'] => /usr/local/etc/php
$_ENV['GPG_KEYS'] => 42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312
$_ENV['PHP_LDFLAGS'] => -Wl,-O1 -Wl,--hash-style=both -pie
$_ENV['PWD'] => /var/www/html/src
$_ENV['APACHE_DOCUMENT_ROOT'] => /var/www/html/
$_ENV['HOME'] => /root
$_ENV['PHP_SHA256'] => 98284deac017da0d426117ecae7599a1f1bf62ae3911e8bc16c4403a8f4bdf13
$_ENV['PHPIZE_DEPS'] => autoconf        dpkg-dev        file        g++         gcc         libc-dev        make        pkg-config      re2c
$_ENV['TERM'] => xterm
$_ENV['PHP_URL'] => https://www.php.net/get/php-7.4.2.tar.xz/from/this/mirror
$_ENV['PHP_EXTRA_CONFIGURE_ARGS'] => --with-apxs2 --disable-cgi
$_ENV['SHLVL'] => 1
$_ENV['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_ENV['LD_LIBRARY_PATH'] => /opt/oracle/instantclient_19_5:
$_ENV['APACHE_ENVVARS'] => /etc/apache2/envvars
$_ENV['PATH'] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$_ENV['PHP_EXTRA_BUILD_DEPS'] => apache2-dev
$_ENV['PHP_ASC_URL'] => https://www.php.net/get/php-7.4.2.tar.xz.asc/from/this/mirror
$_ENV['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_ENV['_'] => /usr/local/bin/php
$_ENV['OLDPWD'] => /var/www/html
$_ENV['ORACLE_HOME'] => /opt/oracle/instantclient_19_5

[当我尝试列出PDO可用的驱动程序时

foreach(\PDO::getAvailableDrivers() as $driver)
            echo $driver, '<br>';

返回

  • sqlite
  • dblib
  • mysql
  • oci

发生问题,当我尝试连接到数据库时。我使用Nette Framework进行连接。这是在我的config.neon内部

 database:
    default:
        dsn: 'jdbc:oracle:thin:@//<hostname>/<servicename>'
        user: 'admin'
        password: '123456'

但是会引发错误-找不到驱动程序

enter image description here

我什至试图将配置中的dsn更改为tnsnames设置。

database:
    dsn: 'oracle:(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=abc.server.com)(PORT=1521)))(CONNECT_DATA=(SID=database))(CHARSET=UTF8))'
    user: 'admin'
    password: '123456'

但也没有运气。 docker镜像的配置是否有问题?

php oracle docker pdo oci
1个回答
0
投票
  • 查看我在Install Oracle Instant client into Docker container for Python cx_Oracle中提供的Dockerfile和资源,这些文件和资源显示了如何在Docker中使用Instant Client。

  • 根据以上参考,您可能会强烈建议使用ldconfig而不是设置LD_LIBRARY_PATH。后者易于不传递到Web服务器。

  • 我不知道Nette,但我强烈怀疑您应该使用jdbc:oracle:thin:@//<hostname>/<servicename>作为连接字符串。 PHP不是Java,JDBC连接字符串是奇数。所有Oracle基于C的驱动程序(PHP OCI8,PHP PDO_OCI,Python cx_Oracle,Node.js node-oracledb等)均使用通用的连接字符串格式,因此您可以查看这些示例。最重要的是,添加PDO前缀和/或Nette所需的任何内容。在纯PDO中,将使用您的实际主机名,服务名,用户名和密码来完成$dbh = new PDO('oci:dbname=hostname/servicename', 'username', 'password');这样的连接。我可以看到Nette和Oracle的一些Google热门产品;我会让您查看它们。

  • 如果可以,请使用PHP OCI8代替PDO_OCI,因为前者具有更多功能和内置功能。我看到一些Google命中似乎表明可以使用OCI8;再次,我会让您进行搜索。

© www.soinside.com 2019 - 2024. All rights reserved.