Tag Archives: Php

PHP: i 5 metodi per settare la scrittura degli errori

Pubblicato da

PHP: i 5 metodi per settare la scrittura degli errori

Con le dovute variazioni sintattiche ci sono 5 metodi per indicare quali (e quanti) errori generati dall’esecuzione di applicativi PHP scrivere nel file di log.
I punti sottostanti fanno riferimento ad un ambiente Ubuntu/Apache ma differiscono poco con gli altri ambienti.

  1. Nel file di configurazione php.ini. Scrivendo qui l’istruzione, questa avrà effetto su tutti i virtual hosts.
  2. Nella directory conf.d. Ad esempio in Ubuntu lo troviamo in /etc/php5/apache2/conf.d . Ogni file aggiunto in questa directory si aggiunge alle istruzioni di php.ini. Nel caso di ripetizione dell’istruzione, le istruzioni in conf.d hanno la precedenza. Anche qui gli effetti sono su tutti i virtual hosts.
  3. Nella configurazione del virtual host di Apache. Generalmente lo troviamo in /etc/apache2/sites-available. Ogni virtual host può avere le sue impostazioni personalizzate e queste ultime hanno la precedenza su quelle indicate nei due punti superiori.
  4. In .htaccess. E’ possibile indicare anche in questo file il livello di error_reporting degli errori PHP. In questo caso la sintassi prevede il tag php_flag . Ha effetto solo nelle cartelle dove risiede il file .htaccess ma ha prevalenza rispetto ai metodi summensionati. In questo caso non è necessario riavviare Apache.
  5. Nel codice sorgente. L’ultimo posto è proprio indicare nel codice sorgente PHP il livello di reportistica degli errori . Basta richiamare le funzioni “error_reporting()”oppure “ini_set(“error_reporting”)”

Maggiori info sulle funzioni di error_reporting

PHP: gestione upload grandi file

Pubblicato da

PHP: gestione upload grandi file

PHP: gestione upload grandi file

La gestione dell’upload dei file con PHP può diventare un problema quando i file eccedono una certa grandezza.
Se c’è la necessità di inviare file di grandi dimensioni dobbiamo intervenire su alcuni parametri PHP che, di base, hanno impostazioni più prudenziali.
Il file di configurazione php.ini è il perno centrale per modificare queste impostazioni.

Prima di tutto bisogna permettere l’upload via HTTP quindi settiamo

file_uploads = On (oppure 1 oppure true)

Poi c’è la dimensione massima del file

upload_max_filesize = 20M

a cui associare la dimensione massima di TUTTI i contenuti uploadati, normalmente questo valore deve essere almeno del 40% superiore al valore precedente

post_max_size = 40M

Altro elemento importante da considerare è il tempo massimo in cui viene inviato il file.
Quindi si deve intervenire sul tempo massimo, espresso in secondi, di esecuzione dello script PHP

max_execution_time = 30

La gestione di questi processi implica il consumo di molta memoria. per cui è meglio intervenire anche su questo parametro.

memory_limit = 128M

Link: PHP

PyroCMS: il CMS costruito su base CodeIgniter

Pubblicato da

PyroCMS: il CMS costruito su base CodeIgniter

PyroCMS: il CMS costruito su base CodeIgniter

Ci sono decine e decine di CMS in giro. Ci sono quelli per chi vuole solo usarli senza alcun problema di installazione e configurazione e poi ci sono quelli che apparantemente sono altrettanto user friendly ma che stimolano la fantasia dello sviluppatore.
Rientra in quest’ultima cerchia PyroCMS sviluppato sul noto framework PHP CodeIgniter.
Che significa? Avere subito un prodotto moderno, efficiente e maturo per un immediato utilizzo ma anche un’ottima base per pensare “in grande”.
Ancora non ho provato PyroCMS ma il fatto che sia basato su CodeIgniter mi piace molto perchè ne amplia le possibilità e le prospettive.
Tra l’altro l’azienda che ha rilasciato PyroCMS è proprio uno dei maggiori supporter di CodeIgniter, quindi è assicurato il costante aggiornamento ai nuovi rilasci del framework.

Del CMS ci sono due edizioni: Community e Professional.
Entrambe godranno sempre degli aggiornamenti ma la prima, gratuita, non ha la possibilità, ad esempio, della gestione multi-sito e dei temi di amministrazione.
Lo userò sicuramente per qualche progetto e proporrò una recensione più ampia.

Link: PyroCMS

Alternativa a PhpMyAdmin

Pubblicato da

Alternativa a PhpMyAdmin

SQL Buddy è un’alernativa concreta a PhpMyAdmin.
Come PMA anche SQL Buddy è un gestore online di database MySQL, le differenze si riducono ad un’interfaccia più gradevole, ad un minor set di funzioni e, conseguentemente, ad un peso minore del pacchetto di file.
In più, SQL Buddy non ha installazione! Basta scompattare lo zip che si scarica dal sito ufficiale, metterlo sul server e, dopo un paio di doverose configurazioni via interfaccia, si può già lavorare.
L’unica nota stonata riguarda l’esportazione che può essere effettuata solo sotto forma di file txt.

NOTA BENE: a giudicare dal sito, SQL Buddy sembra un progetto abbandonato ma lo sviluppatore si è ripromesso di rilasciare solo una major release ogni anno. Siamo quindi in vista della 2.0

Link: SQL Buddy

PHP: adattare le immagini alla risoluzione dello schermo

Pubblicato da

PHP: adattare le immagini alla risoluzione dello schermo

PHP: adattare le immagini alla risoluzione dello schermo

Uno dei crucci di chi sviluppa per il web è quello di rendere la propria applicazione fruibile per la maggior parte dei dispositivi.
Questo significa o creare più versioni di una stessa applicazione o creare un unico layout che sia fluido e adattabile alle varie situazioni.
Ma le immagini?

Una tecnica per adattare le immagini alla risoluzione dello schermo è quella del sistema chiamato Adaptive Images che sfrutta Javascript e le librerie grafiche di PHP.
Il metodo è semplice

  • il javascript rileva la dimensione dello schermo e crea un cookie che ne immagazzina il valore
  • il file .htaccess intercetta ogni richiesta per file grafico .jpg, .gif o .png
  • questa richiesta viene inviata al file PHP che controlla se esiste una versione già “cachizzata” del file nella dimensione adatta
  • se non esiste nella cache, il file viene generato e inviato in output

Il sistema Adaptive Images richiede

  • Apache 2
  • PHP 5.x
  • GD lib

Link: Adaptive Images

Problema Horde con PHP 5.3

Pubblicato da

Problema Horde con PHP 5.3

L’aggiornamento a PHP 5.3 ha portato svariate noie con le vecchie applicazioni.
Tra queste il servizio per server di webmail Horde dà qualche disfunzione se non, addirittura, smette proprio di funzionare!
Dopo qualche ora di ricerca ho trovato questa brillante soluzione nel caso in cui, dopo il login, ci si ritrova in una pagina bianca

in
/usr/share/psa-horde/imp/lib/IMAP/Client.php line 576
modifica  
function namespace($additional = array())
con 
function plnamespace($additional = array())

in
/usr/share/psa-horde/imp/lib/Session.php line 295
modifica  
$_SESSION['imp']['namespace'] = $imapclient->namespace($user_namespace);
con 
$_SESSION['imp']['namespace'] = $imapclient->plnamespace($user_namespace);

Link: howto’s

Aggiornare PHP su CentOS

Pubblicato da

Aggiornare PHP su CentOS

Aggiornare PHP su CentOS

L’aggiornamento di WordPress alla versione 3.2.1 richiedeva un upgrade di PHP alla versione 5.2.4 o superiore del mio server con CentOS.
Così ho proceduto (dopo un adeguato backup dell’intero sistema) installando yum e aggiornando partendo dalle dipendenze (MySQL).

Installo yum

wget  http://www.atomicorp.com/installers/atomic.sh
sh atomic.sh

Aggiorno MySQL

yum update mysql
mv /etc/my.cnf.rpmnew /etc/my.cnf
service mysqld restart

Dopo questa operazione anche PHP è aggiornato alla versione più recente.
Tuttavia il servizio mysqld non ne voleva sapere di riavviarsi.
Dopo aver googlato un po’ ho capito che la dipendenza bdb non è più necessaria in /etc/my.cnf (il file di configurazione).
Per cui ho commentato la riga di comando che lo riguardava.


[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

#skip-bdb

set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2
[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-bdb


set-variable = innodb_buffer_pool_size=2M
set-variable = innodb_additional_mem_pool_size=500K
set-variable = innodb_log_buffer_size=500K
set-variable = innodb_thread_concurrency=2

..ed ho potuto riavviare normalmente il demone MySQL.

Link: CentOS PHP MySQL

 

MySQL: contare le occorrenze tra i valori di un campo

Pubblicato da

Talvolta si fa un uso eccessivo di PHP anche quando basterebbero gli strumenti messi a disposizione dal linguaggio SQL.
Un esempio è quando si vogliono contare le occorrenze di un determinato valore all’interno delle diverse righe di un campo.
Con PHP siamo abituati a creare un contatore ed a stampare la variabile ma possiamo fare tutto con SQL.
Riprendo l’esempio che ho trovato sul web

person vote
obama yes
mccain no
obama yes
obama no
mccain yes
obama yes
obama yes
obama no
mccain no

Il codice SQL che compie il lavoro è

SELECT person,
SUM(IF(vote = "yes", 1,0)) AS `yes_votes`,
SUM(IF(vote = "no", 1,0)) AS `no_votes`,
COUNT(vote) AS `total`
FROM votes
GROUP BY person
ORDER BY yes_votes DESC

Il risultato è

person yes_votes no_votes total
obama 4 2 6
mccain 1 2 3

La parte comoda del codice SQL risiede in quel ..SUM(IF.. che ci evita di creare un loop in PHP a valle della query per il conteggio.

via Random Snippets

PHP Template Inheritance: un template engine semplice e pratico

Pubblicato da

PHP Template Inheritance: un template engine semplice e pratico

I Template Engine sono librerie di codice che permettono di separare lo sviluppo e la gestione grafica di un sito dalle sue funzionalità.
Tramite linguaggi fatti da tag proprietari è possibile gestire layout coerenti in maniera semplice e facilmente manutenibile.

Non è sempre semplice però imparare i vari tipi di sintassi utilizzati da Template Engine complessi come Smarty o PHP-Sugar (senza contare quelli inclusi in molti popolari CMS).
Per questo nasce PHP Template Inheritance che usa solo comune, e conosciuto, PHP.
Il sistema è semplice. Un file parent include la libreria dell’engine, definisce la struttura HTML e i markers tra i quali verrà inserito il contenuto.
I markers definiscono un blocco.
Un file di tipo child, privo di qualsiasi tag HTML (ma resta sempre possibile inserirlo), richiama il file parent e inserisce i contenuti nei blocchi precedentemente definiti.

Una volta entrati nella logica di funzionamento è possibile creare strutture anche complesse per mezzo di blocchi annidati.
Per tutte le funzionalità supportate si faccia  riferimento al sito dello sviluppatore.

Link: PHP Template Inheritance