Page 1 of 1

Ubuntu/Apache/PHP5.2.1 - cannot use dynamic extensions

Posted: Tue Mar 06, 2007 9:54 am
by feenster
Hi all,
I'm trying to compile PHP 5.2.1 on my Ubuntu 6.10 server. I've downloaded the source code from php.net and am running the following configure command on it:

Code: Select all

./configure --with-apxs2=/usr/bin/apxs2 --with-mysql --with-informix=/opt/informix --enable-shared --enable-pdo=shared --without-sqlite --without-pdo-sqlite --with-pdo-mysql=shared --with-zlib --with-xml --with-pdo-informix=shared,/opt/informix
After doing this, then make, I copy over the generated libphp5.so file into my Apache extensions directory, add extension=pdo.so (and lines for the PDO-MySQL/Informix extensions) into my php.ini and restart Apache. I would expect to see PDO, PDO-MySQL and PDO-Informix listed in my phpinfo() - but they don't appear.

So, I tried recompiling PHP but without any of the PDO extensions being shared. This worked, and I could see PDO and PDO-MySQL in phpinfo(), but not PDO-Informix.

So, can anyone hazard a guess as to why none of the PDO extensions load when compiled shared? I don't get any related error messages in the Apache or System logs by the way....

Cheers,
Matt

Re: Ubuntu/Apache/PHP5.2.1 - cannot use dynamic extensions

Posted: Tue Mar 06, 2007 10:58 am
by volka
feenster wrote:So, can anyone hazard a guess as to why none of the PDO extensions load when compiled shared?
Did you only copy libphp5.so and not the pdo .so files? (.so shared object)

Posted: Tue Mar 06, 2007 1:07 pm
by feenster
Hi Volka,

Initially, yes I just copied libphp5.so. However, I tried re-configure-ing and make-ing, then did a make install to make sure I copied the whole lot across.

Alas, still no joy :(

Matt

Posted: Wed Mar 07, 2007 11:13 am
by feenster
Sorted! The process was this:

1) Download the PHP 5.2.1 source into a fresh folder
2) Run the following:

Code: Select all

./configure --with-apxs2=/usr/bin/apxs2 --with-mysql --with-informix=/opt/informix --enable-shared --enable-pdo=shared --without-sqlite --without-pdo-sqlite --with-zlib --with-xml --with-pecl --with-pdo-mysql=shared --with-pdo-informix=shared,/opt/informix --with-config-file-path=/etc/php5/apache2
3) Ran "make" and "make install"
4) Altered /etc/php5/apache2/php.ini to this:

Code: Select all

extension_dir=/usr/local/lib/php/extensions/no-debug-zts-20060613
5) Added the following to php.ini:

Code: Select all

extension=pdo.so
extension=pdo_mysql.so
extension=pdo_informix.so
6) Restarted Apache2

And they appear in PHPInfo();!!! This leaves me with another problem unfortunately. *.php files are just displaying as source code in the browser, except for:

Code: Select all

<?php phpinfo(); ?>
Any ideas what could be causing this? I've enabled the PHP5 mod using "a2enmod php5", but to no joy. Any thoughts?

Cheers,
Matt

Posted: Wed Mar 07, 2007 11:58 am
by Kieran Huggins
are short tags turned on?

Posted: Wed Mar 07, 2007 12:55 pm
by RobertGonzalez
You need to tell apache what to do with .php files. This is usually done in the php.conf module for apache, when apache is configured with PHP as a module.

Posted: Wed Mar 07, 2007 1:06 pm
by feenster
Kieran Huggins wrote:are short tags turned on?
Ah! No, they weren't, but I wasn't using short tags anyway. However, i've turned it on and it works a treat now. Do you know why this would be?

Thanks for the help guys.

Cheers,
Matt

Posted: Wed Mar 07, 2007 1:55 pm
by volka
http://de2.php.net/manual/en/ini.core.php#ini.short-open-tag wrote: short_open_tag boolean

Tells whether the short form (<? ?>) of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"'; ?>. Also if disabled, you must use the long form of the PHP open tag (<?php ?>).

Note: This directive also affects the shorthand <?=, which is identical to <? echo. Use of this shortcut requires short_open_tag to be on.
better use <?php

Posted: Wed Mar 07, 2007 2:03 pm
by RobertGonzalez
Turn short tags off and rewrite the short tags in the code to be long tags.

Posted: Wed Mar 07, 2007 4:24 pm
by feenster
Hi,
Thanks for the replies. That was my point - I already use the "long" version of the <?php tags. Not to worry though, if it is working fine now, that is good enough for me :)

Matt