Newsgroup: it.comp.www.php
Titolo: Compilare le estensioni php per macosx

Salve a tutti,
Mi trovo nella necessita' di dover compilare una estensione creata da me per
php sotto panther ( MacOsX 10.3.2 ).
Ho seguito le istruzioni riportate nel manuale:
In primo luogo ho creato il template dell'estensione con il comando  :
./ext_skel --extname=prova    dove prova e' il nome del mio modulo.
fin qui tutto ok.
Poi ho modificato il file prova.m4 creato dal comando ext_skel  ( e qui
penso di avere fatto un casino )
Riporto anche questo file
dnl $Id$
dnl config.m4 for extension prova
dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary. This file will not work
dnl without editing.
dnl If your extension references something external, use with:
dnl PHP_ARG_WITH(prova, for prova support,[ --with-prova Include prova
support])
dnl Otherwise use enable:
    PHP_ARG_ENABLE(prova, whether to enable prova support,
    dnl Make sure that the comment is aligned:
    [ --enable-prova Enable prova support])
    if test "$PHP_PROVA" != "no"; then
        dnl Write more examples of tests here...
        dnl # --with-prova -> check with-path
        SEARCH_PATH="/usr/local /usr" # you might want to change this
        SEARCH_FOR="/include/prova.h" # you most likely want to change this
        if test -r $PHP_PROVA/; then # path given as parameter
            PROVA_DIR=$PHP_PROVA
            else # search default path list
                AC_MSG_CHECKING([for prova files in default path])
                for i in $SEARCH_PATH ; do
                    if test -r $i/$SEARCH_FOR; then
                        PROVA_DIR=$i
                        AC_MSG_RESULT(found in $i)
                    fi
                done
            fi
        if test -z "$PROVA_DIR"; then
            AC_MSG_RESULT([not found])
            AC_MSG_ERROR([Please reinstall the prova distribution])
        fi
dnl # --with-prova -> add include path
        PHP_ADD_INCLUDE($PROVA_DIR/include)
dnl # --with-prova -> check for lib and symbol presence
        LIBNAME=prova # you may want to change this
        LIBSYMBOL=prova # you most likely want to change this
        PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
        [
        PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $PROVA_DIR/lib,
PROVA_SHARED_LIBADD)
        AC_DEFINE(HAVE_PROVALIB,1,[ ])
        ],[
        AC_MSG_ERROR([wrong prova lib version or lib not found])
        ],[
        -L$PROVA_DIR/lib -lm -ldl
        ])
dnl
        PHP_SUBST(PROVA_SHARED_LIBADD)
        PHP_NEW_EXTENSION(prova, prova.c, $ext_shared)
        fi
Fatto questo ho seguito questi passi
  ./buildconf
./configure --with-prova
make
./php -f ext/my_module/prova.php
e con questo ultimo comando il sistema mi restituisce
Functions available in the test extension:<br>
Warning: Invalid argument supplied for foreach() in
/Users/andrea/zeta/php4.3.4/ext/prova/prova.php on line 8
<br>
Module prova is not compiled into PHP
riporto per completezza prova.php che e' stato creato automaticamente dal
sistema
<?
if(!extension_loaded('prova')) {
    dl('prova.' . PHP_SHLIB_SUFFIX);
}
$module = 'prova';
$functions = get_extension_funcs($module);
echo "Functions available in the test extension:<br>\n";
foreach($functions as $func) {
    echo $func."<br>\n";
}
echo "<br>\n";
$function = 'confirm_' . $module . '_compiled';
if (extension_loaded($module)) {
    $str = $function($module);
} else {
        $str = "Module $module is not compiled into PHP";
    }
echo "$str\n";
?>
Ora nella cartella dell'estensione trovo due file di nome prova.Uno con
estensione .o ed un altro con estensione .lo
Ho provato a spostarlo nella cartella in cui si trovano le estensioni gia'
compilate, ma php mi dice che cerca il file prova.dylib.
qualcuno di voi sa perche' l'estensione che ho creato e' di tipo dylib (
dovrebbe essere dinamic library).
Grazie a tutti.

 dovrebbe essere dinamic library).
ciao
io ho provato senza successo a compilare php 4.3.4 e 5.0, solo perché mi
serviva abilitare l'estensione calendar.
Non capisco perché la compilazione non vada a buon fine. Ose ci va il
./configure non ci va poi il make
Spero di essere fortunato quanto te, in Panther.
ciao
Salvo