Archivio

Posts Tagged ‘Php’

Caratteri, capiamoci qualcosa!

16 settembre 2009 stefano Nessun commento

Sposto sul blog questo vecchio articolo che avevo pubblicato un pò di tempo fa!

Uno dei problemi che spesso si incontra sviluppando pagine web con PHP e MySLQ è quello dei caratteri, soprattutto quelli accentati o quelli aprticolari come l’euro €.

Il tutto dipende da errori di conversione fra diversi charset, infatti, spesso inconsapevolmente, il programmatore principiante non presta attenzione a questo aspetto durante lo sviluppo lasciando le impostazioni di default che spesso non coincidono.

Il database MySQL per esempio imposta come charset di default il latin1 mentre il web server solitamente utilizza utf-8. Durante questa conversione si possono creare delle imprecisioni che portano alla mancata visualizzazione dei caratteri.

Come risolvere il problema?

Semplice basta impostare tutto come utf-8 che è il charset consigliato dal w3c.

Allora per prima cosa impostate il vostro editor per scrivere con il charset utf-8.

Inserite in ogni pagina html, xhtml quale charset viene utilizzato con la seguente direttiva:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Quando create il database MySQL specificate come default charset utf-8 e come collation utf-8_general_ci.

Bisogna poi infine fare attenzione ad un aspetto critico. MySQL usa come default charset latin1 anche per il client e la connessione, queste opzioni sono configurate nelle variabili del server.

Potete procedere in due modi:

  • Modificate i valori di default del server MySQL ma fate attenzione perché ciò influisce sui database e le applicazioni precedenti.
  • Eseguire seguenti due query subito dopo la connessione:

SET NAMES utf8
SET CHARACTER_SET utf8

Assicuratevi che anche il web server utilizzi il charset uft-8.

Ho fatto svariate prove e non ho avuto problemi con moltissimi caratteri sia in inserimento sul database che il lettura, se avete ulteriori informazioni per completare questo piccolo articolo inviatemele pure e le pubblicherò col vostro nome.

Installiamo php 5.2.10 su Snow Leopard

14 settembre 2009 stefano 20 commenti

Eh si! Con Snow Leopard viene fornito a corredo il php 5.3 cioè l’ultima versione disponibile. Il problema è che php 5.3 apporta delle modifiche sostanziali a linguaggio ed elimina alcune funzioni, che poi da diversi anni si chiedeva di non usare più dichiarandole “Deprecated”, che di fatto impediscono il funzionamento di alcuni dei software open-source più comuni fra cui zen-cart, magento, joomla etc. Poiché sono uno sviluppatore che opera principalmente con questi software era per me impossibile mantenere il php 5.3 quindi piano piano sono riuscito a compilare il php 5.2.10 e farlo funzionare con Snow Leopard.

Riporto di seguito la procedura così come l’ho eseguita, è piuttosto lunga e un pò snervante e richiede un minimo di dimestichezza con la shell Unix. Alla fine otterrete una versione di php piuttosto completa, volendo potete aggiungere o togliere le estensioni, e completamente stand-alone che funziona a 64 bit correttamente con web server apache installato di default con Snow Leopard.

Installate prima di tutto mysql prelevando l’ultima versione dal sito www.mysql.com, ovviamente prendete quella per 10.5 x86_64

Prepariamo le directory necessarie:

sudo mkdir /usr/local/php5.2
mkdir ~/src
cd src

installare prima le librerie necessarie in /usr/local/php5.2/

installazione t1lib

curl -O ftp://sunsite.unc.edu/pub/linux/libs/graphics/t1lib-5.1.2.tar.gz
tar xzf t1lib-5.1.2.tar.gz
cd t1lib-5.1.2
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make without_doc
sudo make install
cd ..

installazione lib jpeg

curl -O http://www.ijg.org/files/jpegsrc.v7.tar.gz
tar -xzf jpegsrc.v7.tar.gz
cd jpeg-7/
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..

installazione lib png

Scaricatela da http://www.libpng.org/pub/png/libpng.html e mettela dentro ~/src curl non funziona con sourceforge

tar -xzf libpng-1.2.40.tar.gz
cd libpng-1.2.40
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
sudo make install
cd .

installazione libmcrypt

scaricatela da http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download e mettela dentro ~/src curl non funziona con sourceforge

tar -xzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..

installazione libxml2

curl -O ftp://xmlsoft.org/libxml2/libxml2-2.7.4.tar.gz
tar -xzf libxml2-2.7.4.tar.gz
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..

installazione gettext

curl -O http://gd.tuwien.ac.at/gnu/gnusrc/gettext/gettext-0.17.tar.gz
tar -xzf gettext-0.17.tar.gz
cd gettext-0.17
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..

installazione di curl e lib curl

curl -O http://curl.haxx.se/download/curl-7.19.6.tar.gz
tar -xzf curl-7.19.6.tar.gz
CFLAGS="-arch x86_64" ./configure --prefix=/usr/local/php5.2/
make
sudo make install
cd ..

e finalmente prendiamo php

curl -O http://uk.php.net/distributions/php-5.2.10.tar.bz2
tar xfz php-5.2.10.tar.bz2
cd php-5.2.10

in questa versione di php cè un piccolo errore in un file che va corretto prima di tutto altrimenti non si compila un bel niente

aprite con un editor di testo (io ho usato xcode) il file

~/src/php-5.2.10/ext/iconv/iconv.c

alle riga 196, 197, e 198 trovate

#ifdef HAVE_LIBICONV
#define iconv libiconv
#endif

correggete con

#ifdef HAVE_LIBICONV
#define iconv iconv
#endif

prepariamo il configure

CFLAGS="-arch x86_64 -I/usr/local/php5.2/include/" LDFLAGS="-L/usr/local/php5.2/include/" ./configure --prefix=/usr/local/php5.2 --disable-dependency-tracking --with-apxs2=/usr/sbin/apxs --with-config-file-scan-dir=/usr/local/php5.2/php.d --with-openssl=/usr --with-zlib=/usr --with-zlib-dir=/usr -with-xpm-dir=/usr --with-gd --with-ldap --with-xmlrpc --enable-exif --enable-soap --enable-sqlite-utf8 --enable-wddx --enable-ftp --enable-sockets --with-bz2=/usr --enable-zip --enable-pcntl --enable-shmop --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-mbstring --enable-bcmath --with-libxml-dir=/usr/local/php5.2 --with-xsl=/usr/local/php5.2 --with-gettext=/usr/local/php5.2 --with-png-dir=/usr/local/php5.2 --with-jpeg-dir=/usr/local/php5.2 --enable-gd-native-ttf --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mcrypt=/usr/local/php5.2 --with-iconv --disable-xmlreader --with-t1lib=/usr/local/php5.2 --with-curl=/usr/local/php5.2

ok c’è un altro bug

aprite sempre con xcode

~/src/php-5.2.10/Makefile

il Makefile appena generato, cercate

EXTRA_LIBS =

seguito da una serie di opzioni, aggiungete per prima

-lresolv

salvate e chiudete, compiliamo!

make

bene il php è compilato ora facciamo il backup del php di snow leopard altrimenti viene sovrascritto

sudo mv /usr/libexec/apache2/libphp5.so /usr/libexec/apache2/libphp5.so.snow_leopard
sudo make install

spostiamo modulo appena generato e ripristiniamo il php di snow leopard (opzionale)

sudo mv /usr/libexec/apache2/libphp5.so /usr/local/php5.2/libphp5.so
sudo cp /usr/libexec/apache2/libphp5.so.snow_leopard /usr/libexec/apache2/libphp5.so

Modifichiamo il file

/etc/apache/httpd.conf

commentando la riga

#LoadModule php5_module libexec/apache2/libphp5.so

e aggiungendo la riga

LoadModule php5_module local/php5.2/libphp5.so

Riavviamo apache

sudo apachectl restart

Ok ora avete il vostro php 5.2.10 funzionante potete tranquillamente continuare a sviluppare in attesa della prossima compatibilità de vari software. Bella fatica eh! io sono impazzito 2 giorni pieni pieni, sperò che possa essere d’aiuto a qualcun altro. Se seguite questa guida e qualcosa non vi torna o semplicemente riuscite lasciatemi un commento, sarò felice di aiutarvi o di esservi stato d’aiuto.

Ciao

Snow Leopard e i problemi con Apache Php mySQL

9 settembre 2009 stefano 7 commenti

Mac OS X 10.6Come tutti i mac user incalliti ho subito installato Snow Leopard, anzi ho approfittato del nuovo os per sostituire il disco rigido da 120 gb in dotazione al mio macbook pro con un più performante e capiente Seagate Momentus 320Gb 7200 rpm.  Ho quindi prima aggiornato a Snow Leopard circa 50 minuti, poi ho fatto un bel backup con Time Machines, ho montato il nuovo disco, ho installato Snow Leopard sul nuovo disco circa 30 minuti ed infine ho ripristinato il backup. Risultato dell’operazione che si è svolta in circa 4 ore totali, il mac con il disco nuovo identico spiccicato al vecchio, almeno alla prima impressione. Ad un controllo più approfondito non proprio tutto funzionava correttamente, il db mySQL non è ripartito e il web server Apache da uno strano errore sui permessi.

Ok diciamo subito che non è nulla di grave state tranquilli. Semplicemente Time Machines non copia o non ripristina alcune cose come ad esempio i link simbolici nella cartella /usr/local oppure non li ripristina.

Il problema mySQL è semplicissimo, lo startupitem fa riferimento alla cartella /usr/loc/mysql che tuttavia è un link simbolico alla cartella /usr/local/mysql-5.1.32-osx10.5-x86_64 o più generalmente alla cartella mysql-versione-piattaforma che avete installato. Per far ripartire mysql aprite i terminale e date

cd /usr/local
ls
sudo ln -s  mysql-5.1.32-osx10.5-x86_64 mysql

Sostituite con la vostra cartella di mysql il mio mysql-5.1.32-osx10.5-x86_64 il comando ls vi ha fatto vedere come si chiama.

Passiamo ad Apache, il problema nel mio caso è banale. Snow Leopard aggiorna apache e php (php 5.3.0) e Time Michines ripristina il file /etc/apache2/httpd.conf ma non il file /etc/apache2/extra/vhost.conf che quindi non è più quello modificato da me ma quello di default di Apache. Risultato Apache punta ad un virtualhost inesistente e quindi errore di permessi.  Nel mio caso è stato sufficiente modificare il file di vhost e ricreare i virtualhost iniziali per far funzionare tutto di nuovo. Bisogna anche attivare il modulo php5 togliendo il commento # dalla riga apposita.

Php presenta un problema nella direttiva Default timezone che non è impostata tuttavia ho notato che nel mio caso in /etc non era presente il file php.ini ma semplicemente un php.ini.default che ovviamente non viene riconosciuto come ini file. Questo credo perché il php non è attivo di default. Quindi se non avete il php.ini in /etc

sudo cp /etc/php.ini.default /etc/php.ini
sudo chmod +w/etc/php.ini
sudo vi /etc/php.ini  (se non sapete usare vi usate un altro editor di testo)

specificate nella direttiva Default timezone del php.ini Europe/Rome.

Riavviate Apache.

sudo apacectl restart

Problema risolto ora il mio mac è proprio come prima, il vostro?

Ciao

Juza Forum mod miniature v2

22 gennaio 2009 stefano 3 commenti

Ho completato la seconda versione della modifica che consente la creazione e la visualizzazione delle miniature delle foto nelle sezioni di commento del Juza Forum. Questa seconda versione differisce dalla prima perché crea la miniatura in modo automatico partendo dalla foro inserita nel topic. La form per l’inserimento di un nuovo topic è stata modificata in modo da facilitare l’inserimento della url della foto, della eventuale url della foto ad alta risoluzione e degli eventuali dati di scatto.

Durante l’inserimento vengono prima controllate le dimensioni del file e le dimensioni della foto per vedere se rientrano nei limiti del regolamento e poi viene inserito il topic. Appena inserito il topic viene creata la miniatura che viene salvata sul server del forum.

Per costruire la mod ho utilizzato gran parte delle funzioni già presenti nel phpbb, sopratutto per quanto riguarda il parsing delle request_var e del messaggio al fine di aumentare la sicurezza ed evitare possibili sql injection.

Sono molto soddisfatto del risultato, potete osservare le miniature in funzione sul forum di juza, www.juzaforum.com, nelle sezioni di commento.

Mod Miniature v2 - Juza Forum

Mod Miniature v2 - Juza Forum

Ciao

WordPress 2.7

12 dicembre 2008 stefano Nessun commento

Nella giornata di ieri è stata rilasiata la nuova versione 2.7 di WordPress che introduce numerose nuove funzioni, soprattutto a livello amministrativo.

Le novità principali riguardano:

  • una nuova impaginazione del pannello di amministrazione, che ora è molto più coerente, ha nuove icone e permette la personalizzazione della disposizione dei vari oggetti. Le migliorie sono davvero molte, ancora non lo esploro a fondo, ma la senzazione d’impatto è quella di un pannello molto più usabile ed adattabile.
  • Uno nuovo sistema per la gestione degli aggiornamenti. Da questa versione sarà possibile installare gli aggiornamenti direttamente dal pannello di amministrazione. Gli aggiornamenti tengono conto anche della lingua installata e vengono proposti in base a questa.
  • Molte finestre sono state riprogettate per essere più semplici e pratiche rendendone l’utilizzo più immediato e veloce. Ci sono meno click da fare.
  • L’upload flash, finalmente, funziona di nuovo anche con l’ultima versione del flash player.

Come al solito potete scaricare WordPress 2.7 in italiano dal sito http://www.wordpress-it.it/ e concludo ringraziando il team di sviluppo WordPress e i ragazzi di WordPress Italy per la prontissima traduzione.

Ciao

Screenshot Admin WordPress 2.7

Screenshot Admin WordPress 2.7

Screenshot Admin WordPress 2.7

Screenshot Admin WordPress 2.7

Categorie:Computer, Varie Tag: , , ,

Aggiornamento WordPress 2.5.1

27 aprile 2008 stefano Nessun commento

WordPress 2.5.1 itaIeri è stato reso disponibile l’aggiornamento 2.5.1 di WordPress che risolve circa 80 problemi di cui uno di sicurezza molto importante che non è era, per ovvi motivi, stato reso noto. Poiché verrà pubblicato a breve si consiglia l’aggiornamento immediato.

Ho installato su entrambi i blog da me gestiti l’aggiornamento senza problemi ho riscontrato che questo aggiornamento risolve il problema della galleria per cui avvevo trovato il fix.

Rimane un problema con alcuni jpeg creati da Adobe LightRoom che non vengono ridimensionati durante l’inserimento. Non so il motivo. Tutte le altre funzionalità che io uso costantemente sono perfettamente funzionanti.

Un doveroso ringraziamento va a tutto lo staff di http://www.wordpress-it.it per la prontissima traduzione.

Se avete wp 2.5 aggiornate subito a 2.5.1 potete scaricare direttamente da http://www.wordpress-it.it/wiki/Main/WordPressInItaliano.

Ciao

Problema Galleria WordPress 2.5

21 aprile 2008 stefano Nessun commento

Una delle funzionalità più belle inserite in WordPress 2.5 è la possibilità di gestire gallerie di immagini senza l’installazione di plug-in esterni. Sabato mi sono accorto che le gallerie sul mio blog non funzionavano, allora mi sono messo alla ricerca del possibile problema. 

Si tratta a quanto pare di un problema legato alla versione di mysql in uso e quindi si verifica in modo casuale solo sui blog che usano certe versioni di mysql. Il problema è documentato nel ticket #6508 della wordpress Trac: http://trac.wordpress.org/ticket/6508.

La soluzione è abbastanza semplice: nel file /wp-includes/media.php trova e commenta con // la linea

$attachments = get_children("post_parent=$id&post_type=attachment&post_mime_type=image&orderby=\"{$orderby}\"");

e inserisci al suo posto

$attachments = get_children("post_parent=$id&post_type=attachment&post_mime_type=image&order=&orderby={$orderby}");

Fermi tutti! ho trovato una soluzione più completa che mette al riparo da tutto e rende compatibile la clausola orderby con tutti i db.

Si tratta di modificare i tre file, media.php, post.php e formatting.php guardate qui:

http://trac.wordpress.org/changeset/7592

Mod Anteprime juzaforum.com

25 dicembre 2007 stefano 5 commenti

Ieri ho completato una modifica al phpbb v. 3 per visualizzare, solo su determinati forum, le anteprime delle immagini contenute nei topic. I pratica oltre a normale post, l’utente può inserire anche una piccola immagine di 100px sul lato lungo come anteprima, che verrà visualizzata nella lista dei topic.

Nel realizzare la modifca ho utilizzato solo ed esclusivamente le funzioni di phpbb presenti per la gestione degli allegati, per diversi motivi:

  • maggiore sicurezza, non ho inserito codice esterno al proggetto;
  • funzionalità inalterata, è possibile inserire, modificare ed eliminare i post normalmente come all’origine;
  • possibilità nel PCA di controlare il numero e la dimnesione delle anteprime;
  • possibilità nel PCA di gestione delle anteprime orfane, cioè immagini non collegate alcun post.

Per veder le anteprime in azione andate su www.juzaforum.com/forum nelle sezioni di commento delle foto.

Categorie:Computer, Varie Tag: , , ,

Realizzazione lepam.it

24 dicembre 2007 stefano 4 commenti

Salve a tutti, e scusate se sono stato assente per un pò, ma il lavoro che vi sto per presentare mi ha tenuto diciamo piuttosto occupato.

Il lavoro è una personalizzazione avanzata del noto software di eCommerce Zen Cart® che potete reperire su www.zen-cart.com in versione internazionale e su http://www.zencart-italia.it/ in versione già pronta per l’italia, sia nelle lingua che nei moduli di pagamento e spedizione.

La personalizzazione di zen-cart di base si effettua in modo molto semplice ed è alla portata di tutti, cosa diversa invece è la modifica radicale dell’impaginazione che richiede buone conoscenze di php e xhtml. In lepam.it il template originario è stato stravolto per trovare grafica accattivante e allo stesso tempo semplice da navigare.

Il sistema di ovveraide dei template di zen-cart, che sarà oggetto di un mio prossimo articolo, è davvero potente e una volta capitone il meccanismo semplice da usare.

L’unico neo di zen-cart a mio avviso è la mancanza di una documentazione sul codice sorgente, sulle funzioni e sulle classi di oggetti che costituiscono il progetto. Questo comporta, durante la modifica, a ricercare determinate funzionalità un pò a tentoni con notevole perdita di tempo.

Per ora vi saluto e vi invito a visitare www.lepam.it

Categorie:Computer, Lavoro, Varie Tag: , , ,