Bluemix上的PDO致命错误

not*_*tme 4 php pdo ibm-cloud

我真的很难让PDO在bluemix中使用PHP.我每次收到此错误时都无法使用它:

Fatal error: Class 'PDO' not found in ...
Run Code Online (Sandbox Code Playgroud)

然后我在.bp-config下添加了options.json

{
     "PHP_VERSION": "{PHP_55_LATEST}",
       "WEB_SERVER": "httpd",
     "PHP_EXTENSIONS": [ "bz2", "zlib", "openssl", "fpm", "tokenizer", "curl", "mcrypt", "mbstring", "pdo", "mysqli"]
}
Run Code Online (Sandbox Code Playgroud)

然后我也试过.bp-config下的php.ini

display_errors = On
display_startup_errors = On
extension=pdo.so
extension=pdo_mysql.so
extension=mysqli.so
extension=mysql.so
extension=mbstring.so
Run Code Online (Sandbox Code Playgroud)

并在phpinfo()之后; 我明白了:

'./configure' '--prefix=/tmp/staged/app/php' '--disable-static' '--enable-shared' '--enable-ftp=shared' '--enable-sockets=shared' '--enable-soap=shared' '--enable-fileinfo=shared' '--enable-bcmath' '--enable-calendar' '--with-kerberos' '--enable-zip=shared' '--with-bz2=shared' '--with-curl=shared' '--enable-dba=shared' '--with-cdb' '--with-gdbm' '--with-mcrypt=shared' '--with-mhash=shared' '--with-mysql=shared' '--with-mysqli=shared' '--enable-pdo=shared' '--with-pdo-sqlite=shared,/usr' '--with-pdo-mysql=shared,mysqlnd' '--with-gd=shared' '--with-jpeg-dir=/usr' '--with-freetype-dir=/usr' '--enable-gd-native-ttf' '--with-pdo-pgsql=shared' '--with-pgsql=shared' '--with-pspell=shared' '--with-gettext=shared' '--with-gmp=shared' '--with-imap=shared' '--with-imap-ssl=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-zlib=shared' '--with-xsl=shared' '--with-snmp=shared' '--enable-mbstring=shared' '--enable-mbregex' '--enable-exif=shared' '--with-openssl=shared' '--enable-fpm'
Run Code Online (Sandbox Code Playgroud)

我也尝试过composer.json:

{
  "require": {
    "ext-mysqli": "*",
    "ext-pdo": "*",
    "ext-pdo_mysql": "*"
  }
}
Run Code Online (Sandbox Code Playgroud)

但仍然,经过所有这些步骤,我仍然得到相同的错误,因为天和日:(绝望:

小智 5

对我来说,作曲家没有工作但是options.json是.

.bp-config /下的文件options.json还应包含您要使用的驱动程序.否则,PDO本身无法与DB通信.

这是我的工作options.json

{
"PHP_EXTENSIONS": ["bz2", "pdo", "zlib", "curl", "mcrypt", "mbstring", "mysqli", "gd", "zip", "pdo_mysql", "pdo_sqlite" ]
}
Run Code Online (Sandbox Code Playgroud)

从您提供的phpinfo(),您可以使用PDO与mysql,sqlite和pgsql进行通信.

要查看是否已加载驱动程序运行phpinfo()并查找PDO部分.应该是这样的:PDO drivers mysql, sqlite.