[prev in list] [next in list] [prev in thread] [next in thread] 

List:       phpdoc
Subject:    [PHP-DOC] #35432 [Opn->Asn]: make fails with PDO and MySQL5
From:       nlopess () php ! net
Date:       2005-11-30 20:47:32
Message-ID: 200511302047.jAUKlWjR009619 () ez1 ! php ! net
[Download RAW message or body]

 ID:               35432
 Updated by:       nlopess@php.net
 Reported By:      mail at philipp-wagner dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         Documentation problem
 Operating System: SuSE Linux 8.0
 PHP Version:      5CVS-2005-11-27 (snap)
-Assigned To:      wez
+Assigned To:      dbs
 New Comment:

Dan, can you take a look at this please?


Previous Comments:
------------------------------------------------------------------------

[2005-11-30 21:42:01] mail at philipp-wagner dot com

I'm really sorry that I'm adding again some small thing, but I figured
out that it is also important in which order you load the modules. You
have to load the PDO modules first, before you load the sqlite module,
otherwise you get the following error:
<b>Warning</b>:  PHP Startup: Unable to load dynamic library
'/usr/local/lib/php/extensions/no-debug-non-zts-20050922/sqlite.so' -
/usr/local/lib/php/extensions/no-debug-non-zts-20050922/sqlite.so:
undefined symbol: php_pdo_register_driver in <b>Unknown</b> on line
<b>0</b><br />

The PDO modules are loaded correctly, but the sqlite module won't until
you place the extension=sqlite.so line in the php.ini file after the pdo
extensions. 

That should be mentioned in the documentation also.

------------------------------------------------------------------------

[2005-11-30 20:15:30] mail at philipp-wagner dot com

It's really a documentation problem then. It's NOT enough to just
specify (as you wrote above)
--enable-pdo=shared
--with-pdo-mysql=shared,/usr/local/mysql
--with-sqlite=shared

I had to use
--enable-pdo=shared
--with-pdo-mysql=shared,/usr/local/mysql
--with-sqlite=shared
--with-pdo-sqlite=shared

to get it to work. This really should be be mentioned in the
documentation. The documentation only suggests to compile with
--enable-pdo=shared, but that won't work, if you don't use at least the
corresponding sqlite configure options also.

------------------------------------------------------------------------

[2005-11-30 18:47:41] wez@php.net

You "simply" need to tell configure to build what you want it to build,
how you want it built.

--enable-pdo=shared
--with-pdo-mysql=shared,/usr/local/mysql
--with-sqlite=shared

I know it sucks that we can't automatically make it work that way you
want it; configure scripts have their limitations.


------------------------------------------------------------------------

[2005-11-30 17:31:25] sniper@php.net

Wez, so, enabling by default is good thing? 
Hint: You should always use --disable-all :)

------------------------------------------------------------------------

[2005-11-30 16:25:12] mail at philipp-wagner dot com

Well, I thought this might be the problem (mixing of shared and static
libraries)... But now the check seems to be too strict.

I first tried to build with  --enable-pdo=shared
--with-pdo-mysql=shared,/usr/local/mysql

Now I got the following error message:
You've configured extension sqlite to build statically, but it depends
on extension pdo, which you've configured to build shared.
You either need to build sqlite shared or build pdo statically for the
build to be successful.

sqlite is enabled by default (I didn't specify exlicitly specify pdo
sqlite support as a configure option).

./configure --help doesn't say anything about an option like
--with-pdo-sqlite, but I tried to use it anyways (or what else should I
do to specify shared pdo sqlite support?). So I ran ./configure with
--with-pdo-sqlite=shared

This worked out quite well at first, configure gave me an output like

checking for sqlite 3 driver for PDO... yes, shared

But then, a bit further down, I got the error message again:

checking for PDO includes... (cached)
/usr/local/src/php5.1-200511301330/ext
checking for lemon... no
configure: warning: lemon versions supported for regeneration of
libsqlite parsers: 1.0 (found: none).
configure: error:
You've configured extension sqlite to build statically, but it depends
on extension pdo, which you've configured to build shared.
You either need to build sqlite shared or build pdo statically for the
build to be successful.

I actually think, if you specify --enable-pdo=shared, all pdo
"submodules" should also be built shared, as it reduces confusion and
is the only way to get a working build anyways  (it seems it is not
possible to mix shared and static pdo libraries, so there's no need to
specify it seperately).

Also, the documentation doesn't say anything about how to build the
specific PDO modules. It just suggests building PDO with
--enable-pdo=shared, but doesn't say which configure options to use for
MySQL PDO support etc. (I just got it from the ./configure --help
output), and also doesn't mention the shared "problem".

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/35432

-- 
Edit this bug report at http://bugs.php.net/?id=35432&edit=1
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic