Pagina 1 di 2

PHP 5.4 per current

Inviato: lun apr 02, 2012 18:46
da conraid
Su slackers.it ho"impacchettato" PHP 5.4 con qualche estensione già compilata, come xdebug, memcached e apc.
Siccome sono pacchetti di "testing" e per slackware -current non usateli in produzione. Li ho compilati per provare le nuove funzionalità di PHP, quindi se volete sperimentare le funzionalità di PHP 5.4 ed usate la -current, e non avete voglia di compilarli da soli PHP, potete usare questi pacchetti :-)
sono graditi feedback per eventuali problemi, suggerimenti, etc...

http://www.slackers.it/repository/php/

p.s.
controllate il php.ini che alcune estensioni non esistono più nella nuova versione

Re: PHP 5.4 per current

Inviato: lun apr 02, 2012 20:48
da miklos
grande conraid!!!!
ti volevo chiedere una cosa, il file c-client.tar.gz come lo hai prodotto?!??!?! sempre da una current?!!?!?
se volessi usare lo slackbuild per compilarmelo da solo sulla stable devo 'rigenerarmi' sto pacchetto?!?!?!?!

Offtopic: su slackware non c'e' verso di vederlo in nessuno slackbuild, nemmeno di 3ze parti, ma secondo me compilare php anche in versione fpm è una cosa che spero presto pat si decida a fare. per chi non lo sapesse dal php 5.3 è diventato stabile un nuovo modo di usare php tramite fastcgi che è piu' veloce persino rispetto all'usare php come modulo (alla apache httpd per intenderci). si basa sul concetto di riutilizzare istanze di php che altrimenti devono essere create ogni volta

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 7:40
da conraid
c-client l'ho prodotto compilando alpine. Lo slackbuild di Pat lo fa a runtime. Se vedi c'è sia la libreria a 32 sia quella a 64 dentro il pacchetto. Più gli include. La versione a 32 la feci tempo fa, quella a 64 ieri. Se hai qualche problema fammelo sapere.
Per fpm ci avevo pensato, solo che non l'ho mai usato, e poi questa volta compilare php mi ha dato qualche problema. Il modulo apache si è compilato normalmente, la versione da linea di comando mi ha dato un po' di errori. Siccome mi serve solo per fare delle prove di compatibilità di alcuni script ho compilato in modo normale, modificando un poco lo script di Pat includendo alcune estensione e togliendo quelle non più esistenti.
Ma con calma potrei farlo, magari facendo varie compilazioni diverse (una per il modulo, una per cli, una per cgi, una per fpm, una per pear, etc...), tipo come fanno le altre distribuzioni.
Poi me lo provi tu? :-)

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 9:20
da conraid
Mi sono accorto che il file c-client.tar.gz sul server non si era aggiornato (uso lftp in modalità mirror, chissà cosa è successo), quindi c'era solo la versione a 32bit. Comunque sto cercando di compilare php-fpm (o meglio, di creare il pacchetto provando se funziona almeno un minimo).

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 9:50
da miklos
conraid ha scritto:Poi me lo provi tu? :-)
certamente.
non ce l'ho sottomano in questo momento ma io avevo modificato lo script di pat per la 5.3.x per buildare anche la versione fpm, appena posso ti condivido lo slackbuild.
comunque se non ricordo male(l'ho fatto un po' di tempo fa) nei sorgenti ci sta un file di conf e uno script di avvio/start/stop che vanno bene per una pacchettizzazione di default(lo script di avvio funziona egregiamente se rinominato in rc.php-fpm)

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 9:54
da conraid
io sto creando una compilazione apposita, in pratica al posto delle due (modulo e cli/cgi) di Pat ci ho aggiunto una per fpm, copiando da archlinux il modo per riutilizzare il codice (altrimenti anche con un p4 ci sto una vita). Per i file di avvio ho visto, ho solo modificato alcuni path. Per ora sta compilando... in questi casi sento la mancanza di un pc più potente :-)

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 10:02
da miklos
ottimo... se riusciamo a fare una cosa modulare si puo' pensare di sopperire alla carenza nella stable di questa funzionalità pacchettizzandola nel repo slacky (solo la versione fpm e chiaramente in questo caso della 5.3.x)
io nel repo a 64bit ho già pacchettizzato nginx.. sarebbe un buona cosa secondo me, per chi vuole tentare un approccio diverso dal 'solito' LAMP :D

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 11:14
da rik70
Sono interessato anch'io, se la cosa può far piacere :)

Ho un serverino casalingo su cui gira Lighttpd + php-cgi + Xcache + mysql, sotto Slackware 13.37-32bit. Sarei curioso di provare fpm con php 5.3.x. Se qualcuno ha delle dritte sul come fare, magari partendo dallo SlackBuild di Pat, faccia un fischio please!! 8)

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 12:02
da miklos
ho trovato il mio slackbuild per compilare anche php-fpm. E' una versione modificata di quello di pat e si basa sulle versioine 5.3.x di php
lo posto comunque anche se mi sono accorto solo ora che in questo manca la pacchettizzazione del file di avvio/stop/restart :(

Codice: Seleziona tutto

!/bin/sh

# Build and package mod_php on Slackware.
# by:  David Cantrell <david@slackware.com>
# Modified for PHP 4-5 by volkerdi@slackware.com
# Copyright 2007, 2008, 2009, 2010, 2011  Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


VERSION=5.3.10
ALPINE=2.00
BUILD=${BUILD:-1}

# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) export ARCH=i486 ;;
    arm*) export ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
       *) export ARCH=$( uname -m ) ;;
  esac
fi

NUMJOBS=${NUMJOBS:-" -j7 "}

CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-php/
rm -rf $PKG
mkdir -p $TMP $PKG

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

# we need to compile alpine to get c-client.a for IMAP support:
IMAPLIBDIR=/usr/local/lib${LIBDIRSUFFIX}/c-client
if [ -r $IMAPLIBDIR/lib${LIBDIRSUFFIX}/c-client.a ]; then
  echo "Using IMAP library:"
  ls -l $IMAPLIBDIR/lib${LIBDIRSUFFIX}/c-client.a
  sleep 5
else
  ( cd $CWD/../alpine ; ./alpine.SlackBuild || exit 1 ) || exit 1
  ( cd $TMP/alpine-${ALPINE}/imap/c-client
    strip -g c-client.a
    mkdir -p $IMAPLIBDIR/lib${LIBDIRSUFFIX}
    cp c-client.a $IMAPLIBDIR/lib${LIBDIRSUFFIX}
    mkdir -p $IMAPLIBDIR/include
    cp *.h $IMAPLIBDIR/include
  )
fi

mkdir -p $PKG/etc/httpd
mkdir -p $PKG/etc/php
# A trick from DaMouse to enable building php into $PKG.
# We'll remove this later on.
cat /etc/httpd/original/httpd.conf > $PKG/etc/httpd/httpd.conf
if [ ! -e /etc/httpd/original/httpd.conf ]; then
  echo "FATAL:  no /etc/httpd/original/httpd.conf found."
  exit 1
fi

cd $TMP
rm -rf php-$VERSION
tar xvf $CWD/php-$VERSION.tar.?z* || exit 1
cd php-$VERSION

# cleanup:
find . -name "*.orig" -delete

# Add missing(?) PEAR modules back:
if [ -d php-$VERSION/pear/packages ]; then
  ( cd php-$VERSION/pear/packages
    cp -a $CWD/pear/*.bz2 . 2> /dev/null
    bzip2 -d *.bz2 2> /dev/null
  )
fi

if [ "$ARCH" = "s390" ]; then
  zcat $CWD/php.configure.s390.diff.gz | patch -p1 || exit
fi

# Fixup perms/owners:
chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \; -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \;

find . -name "*.h" -exec chmod 644 {} \;

# Sometimes they ship a few of these:
find . -name "*.orig" -exec rm {} \;

# Patch ini files:
zcat $CWD/php.ini-development.diff.gz | patch -p1 --verbose || exit 1
zcat $CWD/php.ini-development.diff.gz | patch -p1 --verbose php.ini-production || exit 1
zcat $CWD/php.session.save_path.diff.gz | patch -p1 --verbose || exit 1

# Generic "kitchen sink" configure function, with as many things as possible (and
# maybe then some ;-) compiled as shared extensions:
php_configure() {
EXTENSION_DIR=/usr/lib${LIBDIRSUFFIX}/php/extensions \
CFLAGS="$SLKCFLAGS" \
./configure \
  $* \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --with-libdir=lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc/php \
  --disable-safe-mode \
  --disable-magic-quotes \
  --enable-zend-multibyte \
  --enable-mbregex \
  --enable-tokenizer=shared \
  --with-config-file-scan-dir=/etc/php \
  --with-config-file-path=/etc/httpd \
  --enable-mod_charset \
  --with-layout=PHP \
  --enable-sigchild \
  --enable-xml \
  --with-libxml-dir=/usr \
  --enable-simplexml \
  --enable-filter \
  --disable-debug \
  --with-openssl=shared \
  --with-pcre-regex=/usr \
  --with-zlib=shared,/usr \
  --enable-bcmath=shared \
  --with-bz2=shared,/usr \
  --enable-calendar=shared \
  --enable-ctype=shared \
  --with-curl=shared \
  --with-curlwrappers \
  --with-mcrypt=/usr \
  --enable-dba=shared \
  --with-gdbm=/usr \
  --with-db4=/usr \
  --enable-exif=shared \
  --enable-ftp=shared \
  --with-gd=shared \
  --with-jpeg-dir=/usr \
  --with-png-dir=/usr \
  --with-zlib-dir=/usr \
  --with-xpm-dir=/usr \
  --with-freetype-dir=/usr \
  --with-t1lib=/usr \
  --enable-gd-native-ttf \
  --enable-gd-jis-conv \
  --with-gettext=shared,/usr \
  --with-gmp=shared,/usr \
  --with-iconv=shared \
  --with-imap-ssl=/usr \
  --with-imap=$IMAPLIBDIR \
  --with-ldap=shared \
  --enable-mbstring=shared \
  --enable-hash \
  --with-mysql=shared,mysqlnd \
  --with-mysqli=shared,mysqlnd \
  --with-mysql-sock=/var/run/mysql/mysql.sock \
  --enable-pdo=shared \
  --with-pdo-mysql=shared,mysqlnd \
  --with-pdo-sqlite=shared,/usr \
  --with-pspell=shared,/usr \
  --with-enchant=shared,/usr \
  --with-mm=/usr \
  --enable-shmop=shared \
  --with-snmp=shared,/usr \
  --enable-soap=shared \
  --enable-sockets \
  --with-sqlite=shared \
  --with-sqlite3=shared \
  --enable-sqlite-utf8 \
  --with-regex=php \
  --enable-sysvmsg \
  --enable-sysvsem \
  --enable-sysvshm \
  --enable-wddx=shared \
  --with-xsl=shared,/usr \
  --enable-zip=shared \
  --with-tsrm-pthreads \
  --enable-shared=yes \
  --enable-static=no \
  --with-gnu-ld \
  --with-pic \
  --build=$ARCH-slackware-linux
}

# I am told this option is worse than nothing.  :-)
#  --enable-safe-mode
#
# I would recommend *against* and will take no responbility for turning on
# "safe" mode.

# Make the Apache2 module version of PHP:
php_configure \
  --with-apxs2=/usr/sbin/apxs
make $NUMJOBS || make || exit 1
make install INSTALL_ROOT=$PKG || exit 1

# Make the CLI/CGI version of PHP:
make distclean
php_configure \
  --enable-pcntl \
  --enable-sigchild
make $NUMJOBS || make || exit 1
mkdir -p $PKG/usr/bin
cat ./sapi/cli/php > $PKG/usr/bin/php
cat ./sapi/cgi/php-cgi > $PKG/usr/bin/php-cgi
chmod 755 $PKG/usr/bin/php
chmod 755 $PKG/usr/bin/php-cgi

# Make the FPM version of PHP:
make distclean
php_configure \
  --enable-pcntl \
  --enable-fpm \
  --disable-cli \
  --localstatedir=/var \
  --enable-sigchild
make $NUMJOBS || make || exit 1
mkdir -p $PKG/usr/bin
cat ./sapi/fpm/php-fpm > $PKG/usr/bin/php-fpm
cat ./sapi/fpm/php-fpm.8 > $PKG/usr/man/man8/php-fpm.8
cat ./sapi/fpm/php-fpm.conf > $PKG/etc/php/php-fpm.conf
chmod 755 $PKG/usr/bin/php-fpm

# PHP (used to) install Pear with some strange permissions.
chmod 755 $PKG/usr/bin/pear

# PHP sometimes puts junk in the root directory:
( cd $PKG
  rm -rf .channels .depdb .depdblock .filemap .lock .registry
)

# Fix $PKG/usr/lib/php perms:
( cd $PKG/usr/lib${LIBDIRSUFFIX}/php
  find . \
   \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
   -exec chmod 755 {} \; -o \
   \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
   -exec chmod 644 {} \;
)

mkdir -p $PKG/usr/doc/php-$VERSION
cp -a \
  CODING_STANDARDS CREDITS EXTENSIONS INSTALL LICENSE NEWS README* TODO* UPGRADING* \
  sapi/cgi/README.FastCGI \
  $PKG/usr/doc/php-$VERSION
chown -R root:root $PKG/usr/doc/php-$VERSION
chmod 644 $PKG/usr/doc/php-$VERSION/UPGRADING*

mkdir -p $PKG/etc/httpd
cp -a php.ini-development php.ini-production $PKG/etc/httpd
cat $CWD/mod_php.conf.example | sed -e "s#lib/httpd#lib${LIBDIRSUFFIX}/httpd#" \
  > $PKG/etc/httpd/mod_php.conf.example
chmod 644 $PKG/etc/httpd/*
chown root:root $PKG/etc/httpd/*

# This can go now.
rm -f $PKG/etc/httpd/httpd*

# Session directory for PHP:
mkdir -p $PKG/var/lib/php
chmod 770 $PKG/var/lib/php
chown root:apache $PKG/var/lib/php

# Strip ELF objects.
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null

gzip -9 $PKG/usr/man/man?/*.?

mkdir -p $PKG/install
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cat $CWD/slack-desc > $PKG/install/slack-desc

#if [ -d "$IMAPLIBDIR" ]; then
#  ( cd $IMAPLIBDIR && rm -rf * )
#  rmdir $IMAPLIBDIR
#fi

cd $PKG
/sbin/makepkg -l y -c n $TMP/php-$VERSION-$ARCH-$BUILD.txz


EDIT: fornisco ulteriori dettagli. Questo slackbuild compila il php alla vecchia maniera (quindi come modulo apache, modulo fcgi, modulo sapi) e in piu' fa un ulteriore passo di compilazione per creare l'eseguibile fpm

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 12:49
da conraid
è come avevo fatto io. Non voglio creare pacchetti multipli (anche perché non avrebbe senso, visto che tanto devo ricompilare tutto, e per installarlo su una slackware standard devo comunque ricompilare tutto non avendo i file di compilazione). Certo, ci sarebbe sempre un pacchetto aggiuntivo per chi interessato, ma ci sto ore a compilare e... chi vuole se lo fa :-)

Quel che intendevo è fare nello SlackBuild così

Codice: Seleziona tutto

# Make the CLI version of PHP:
mkdir pkg-php
cd pkg-php
ln -s ../configure
php_configure \
  --disable-cgi \
  --enable-cli \
  --enable-pcntl \
  --enable-sigchild
make
make install INSTALL_ROOT=$PKG
# PHP (used to) install Pear with some strange permissions.
chmod 755 $PKG/usr/bin/pear
cd -

# Make the Apache2 module version of PHP:
mkdir pkg-apache
cp -a pkg-php pkg-apache
cd pkg-apache
ln -s ../configure
php_configure \
  --disable-cli \
  --disable-cgi \
  --with-apxs2=/usr/sbin/apxs
make
install -Dm755 libs/libphp5.so $PKG/usr/lib${LIBDIRSUFFIX}/httpd/modules/libphp5.so
cd -

# Make CGI&FPM
# Patch fpm config files:
cat $CWD/fpm.diff | patch -p1 --verbose --backup --suffix=.orig
mkdir pkg-fpm
cp -a pkg-php pkg-fpm
cd pkg-fpm
php_configure \
    --disable-cli \
    --enable-cgi \
    --enable-fpm \
    --with-fpm-user=apache \
    --with-fpm-group=apache
make
install -Dm755 sapi/cgi/php-cgi $PKG/usr/bin/php-cgi
install -Dm755 sapi/fpm/php-fpm $PKG/usr/sbin/php-fpm
install -Dm644 sapi/fpm/php-fpm.8 $PKG/usr/man/man8/php-fpm.8
install -Dm644 sapi/fpm/php-fpm.conf $PKG/etc/php/php-fpm.conf
install -Dm755 sapi/fpm/init.d.php-fpm $PKG/etc/rc.d/rc.php-fpm.new


in modo da riutilizzare i file di compilazione di php standard senza fare distclean ogni volta. Questo solo per risparmiare tempo, in realtà se hai un pc veloce meglio fare make distclean

prima ho dovuto interrompere, ora ho rilanciato. Speriamo in serata di finire :-)

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 13:14
da rik70
Ho fatto delle prove in chroot, ma non ne son venuto a capo. Cioè non riesco a lanciare il demone php-fpm. E' un po complessa la cosa, permessi (mi sa che a default va tutto in /usr/var/**) .... utenti (ma http è un user presente in Slackware? Non sarebbe meglio usare apache...o nobody?) Proverò a ricompilare basandomi sui vostri script.

Bye

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 13:19
da conraid
sì, apache, i'm sorry

qui non ho ancora compilato, quindi pensa un po' :-)
ma dovrebbe andare tutto in /var basta impostare la directory giusta nel configure

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 14:01
da conraid
*** glibc detected *** php-fpm: double free or corruption (out): 0x00007fe461d70ed0 ***

ricevo questo errore al lancio di fpm

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 14:05
da rik70
conraid ha scritto:qui non ho ancora compilato, quindi pensa un po' :-)


Mi sa che aspetto voi allora :)

P.s.

Ma --disable-cgi va passato?

Re: PHP 5.4 per current

Inviato: mar apr 03, 2012 14:20
da conraid
l'errore in realtà sparisce se disabilito apc, mi sa di una incompatibilità tra i due. Poi faccio altre prove.

--disable-cgi non penso visto che fpm è un "manager" per fast-cgi

Comunque parte, crea il socket, ma ancora non ho compilato mod_fastcgi :) e mi sa che passo... tanto non lo uso.

Se qualcuno vuole script o pacchetto prova mi faccia un fischio (in realtà il pacchetto ha degli errori, tipo il man in posizione errata e il file di configurazione non modificato completamente)