Gli errori PHP comuni si diagnosticano partendo dal messaggio completo, dal file e dalla riga indicata. Parse error, TypeError, fatal error, warning e notice hanno significati diversi; la correzione deve essere testata fuori produzione e accompagnata dal controllo dei log.
Nota di aggiornamento: Non mostrare errori dettagliati ai visitatori in produzione. Registra i messaggi nei log e abilita il debug visibile soltanto in un ambiente controllato.
Informazioni aggiornate e controlli essenziali
Questo tutorial è dedicato ai nostri clienti possessori di un VPS o di un Server Dedicato (unManaged).
La compilazione PHP è altamente personalizzabile, ma non è un processo semplice e potrai incontrare qualche difficoltà.
Di seguito ti elenchiamo gli errori più comuni PHP e le relative soluzioni:
ERRORE 1 :
checking for BZip2 support… yes
checking for BZip2 in default path… not found
configure: error: Please reinstall the BZip2 distribution
Soluzione:
yum install bzip2-devel
ERRORE 2 :
checking for cURL support… yes
checking if we should use cURL for url streams… no
checking for cURL in default path… not found
configure: error: Please reinstall the libcurl distribution –
easy.h should be in /include/curl/
Soluzione:
yum install curl-devel
ERRORE 3 :
checking for fabsf… yes
checking for floorf… yes
configure: error: jpeglib.h not found.
checking for fabsf… yes
checking for floorf… yes
checking for jpeg_read_header in -ljpeg… yes
configure: error: png.h not found.
Soluzione:
yum install libpng-devel
ERRORE 4 :
checking for curl_multi_strerror in -lcurl… yes
checking for QDBM support… no
checking for GDBM support… no
checking for NDBM support… no
configure: error: DBA: Could not find necessary header file(s).
Soluzione:
yum install db4-devel
ERRORE 5 :
checking for png_write_image in -lpng… yes
If configure fails try –with-xpm-dir=
configure: error: freetype.h not found.
Soluzione:
Fix: Riconfigura PHP con le seguenti opzioni.
–with-xpm-dir=/usr
ERRORE 6 :
checking for png_write_image in -lpng… yes
configure: error: libXpm.(a|so) not found.
Soluzione:
yum install libXpm-devel
ERRORE 7 :
checking for bind_textdomain_codeset in -lc… yes
checking for GNU MP support… yes
configure: error: Unable to locate gmp.h
Soluzione:
yum install gmp-devel
ERRORE 8 :
checking for utf8_mime2text signature… new
checking for U8T_DECOMPOSE…
configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.
Soluzione:
yum install libc-client-devel
ERRORE 9 :
checking for LDAP support… yes, shared
checking for LDAP Cyrus SASL support… yes
configure: error: Cannot find ldap.h
Soluzione:
yum install openldap-devel
ERRORE 10 :
checking for mysql_set_character_set in -lmysqlclient… yes
checking for mysql_stmt_next_result in -lmysqlclient… no
checking for Oracle Database OCI8 support… no
checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h’ not found!
Soluzione:
yum install unixODBC-devel
ERRORE 11 :
checking for PostgreSQL support for PDO… yes, shared
checking for pg_config… not found
configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
Soluzione:
yum install postgresql-devel
ERRORE 12 :
checking for sqlite 3 support for PDO… yes, shared
checking for PDO includes… (cached) /usr/local/src/php-5.3.7/ext
checking for sqlite3 files in default path… not found
configure: error: Please reinstall the sqlite3 distribution
Soluzione:
yum install sqlite-devel
ERRORE 13 :
checking for utsname.domainname… yes
checking for PSPELL support… yes
configure: error: Cannot find pspell
Soluzione:
yum install aspell-devel
ERRORE 14 :
checking whether to enable UCD SNMP hack… yes
checking for default_store.h… no
checking for kstat_read in -lkstat… no
checking for snmp_parse_oid in -lsnmp… no
checking for init_snmp in -lsnmp… no
configure: error: SNMP sanity check failed. Please check config.log for more information.
Soluzione:
yum install net-snmp-devel
ERRORE 15 :
checking whether to enable XMLWriter support… yes, shared
checking for xml2-config path… (cached) /usr/bin/xml2-config
checking whether libxml build works… (cached) yes
checking for XSL support… yes, shared
configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
Soluzione:
yum install libxslt-devel
ERRORE 16 :
configure: error: xml2-config not found. Please check your libxml2 installation.
Soluzione:
yum install libxml2-devel
ERRORE 17 :
checking for PCRE headers location… configure: error: Could not find pcre.h in /usr
Soluzione:
yum install pcre-devel
ERRORE 18 :
libtool: link: cannot find the library `/usr/lib/libidn.la’ or unhandled argument `/usr/lib/libidn.la’
make: *** [sapi/cgi/php-cgi] Error 1
Soluzione:
cd /usr/src/
wget http://ftp.gnu.org/gnu/libidn/libidn-1.26.tar.gz
tar -zvxf libidn-1.26.tar.gz
cd libidn-1.26
./configure
make
make install
ln -s /usr/local/lib/libidn.la /usr/lib/libidn.la
ERRORE 19 :
libtool: link: `/usr/lib/libxml2.la’ is not a valid libtool archive
make: *** [ext/xsl/xsl.la] Error 1
Soluzione:
cd /usr/src/
wget ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
tar -zvxf libxml2-2.7.3.tar.gz
cd libxml2-2.7.3
./configure –prefix=/usr
make
make install
ERRORE 20 :
configure: error: Your t1lib distribution is not installed correctly. Please reinstall it.
Soluzione:
yum install t1lib-devel.x86_64
ERRORE 21:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
Soluzione:
yum install libmcrypt-devel.x86_64
ERRORE 22 :
configure: error: Cannot find libtidy
Soluzione:
yum install libtidy libtidy-devel
Alla Prossima.
Approfondimenti correlati
Fonte ufficiale: Manuale PHP: livelli di errore.
Domande frequenti
Perché la riga indicata non è sempre la causa?
Un errore di sintassi può essere rilevato quando il parser incontra il token successivo. Occorre controllare anche le righe precedenti.
Come gestire gli errori in produzione?
Disabilita la visualizzazione pubblica, abilita logging sicuro, limita accesso ai log e monitora gli errori ricorrenti.
Un aggiornamento PHP può creare errori?
Sì. Funzioni deprecate, tipi più rigorosi e incompatibilità di plugin o codice personalizzato possono emergere dopo il cambio versione.