Mi è capitato di aver appena reinstallato Easyphp e mi sono accorto che se provavo ad eseguire un include/require in un file php mi veniva restituito un warning ed un fatal error :
Warning: require_once(mysite/_include/before_close_head.tpl) [function.require-once]: failed to open stream: No such file or directory in I:\EasyPHP\www\mysite\index.php on line 51Fatal error: require_once() [function.require]: Failed opening required ‘mysite/_include/before_close_head.tpl’ (include_path=’.;C:\php5\pear’) in I:\EasyPHP\www\mysite\index.php on line 51
In breve Easyphp non riusciva a trovare il file da includere perché sbaglia la directory base, andando a cercare erroneamente in “C:\php5\pear”. Ora spiegherò come risolvere il problema.
Dobbiamo aprire il file di configurazione di php. Possiamo farlo o cliccando col destro sull’icona del programma nella TrayIcon (quelle icone vicino all’orologio in basso a dx nella barra di avvio) e clicckiamo su configurazione e poi su php oppure andando nella cartella dove abbiamo installato easyphp, aprendo la cartella conf_files e quindi php.ini.
A questo punto cerchiamo nel file (modifica>trova/cerca) la stringa include_path (di solito non è la prima occorrenza), finché non troviamo una porzione di codice simile a questa:
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
;
; Windows: “\path1;\path2”
;include_path = “.;${path}\php\includes”; PHP’s default setting for include_path is “.;/path/to/php/pear”
; http://php.net/include-path
Nella penultima riga compare proprio quello che stavamo cercando :
; PHP’s default setting for include_path is “.;/path/to/php/pear”
ovvero l’impostazione predefinita per la cartella dell’include è “.;/path/to/php/pear”
Per tornare a far funzionare il tutto basta aggiungere una riga di codice; per comodità la inserisco subito sopra:
; Windows: “\path1;\path2” ;include_path = “.;${path}\php\includes”
include_path = “.;${path}\php\includes;I:\EasyPHP\www\”
; PHP’s default setting for include_path is “.;/path/to/php/pear”
; http://php.net/include-path
La riga inserita è quella in rosso ed è molto simile alla riga subito sopra, la quale indica la corretta sintassi per il comando da inserire. Il punto e virgola che compare all’inizio di alcune righe sta ad indicare che tutta la riga sarà ignorata, infatti il ; indica un commento.
La riga che abbiamo inserito indica alcuni possibili indirizzi dove andare a cercare i files, ognuno dei quali separati da un punto e virgola.
Ho inserito alcuni indirizzi tipici di alcune versioni di easyphp ed infine, e più importante, la cartella dove ho attualmente installato easy php che nel mio caso è proprio I:\EasyPHP\www\
Quindi nel vostro caso basta inserire una riga del tipo:
include_path = “.;${path}\php\includes;${path}\php5\pear\;Unitàdisco:\Cartella di installazione di EasyPHP\www“
oppure solo
include_path = “.;Unitàdisco:\Cartella di installazione di EasyPHP\www“
dove Unitàdisco:\Cartella di installazione di EasyPHP\www va sostituito con il percorso della cartella www all’interno della cartella dove avete installato easyphp, ad esempio “c:\Easyphp 5.3.0\www” oppure “d:\Easyphp\www“ .
Un ultima cosa: fate attenzione ad inserire correttamente il backslash “\” per separare le cartelle e non lo slash normale “/”.
Ciao ho seguito la tua guida ma non riesco a risolvere. La mia configurazione è questa.
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
;
; Windows: “\path1;\path2”
;include_path = “.;${path}\php\includes;C:Programmi(x86)\EasyPHP-12.1\www\”
;include_path = “.;C:\Programmi(x86)\EasyPHP-12.1\www\“
è errata? grazie mille
i warning che mi restituisce sono:
Notice: Undefined index: Fsq in C:\Program Files (x86)\EasyPHP-12.1\www\rose.php on line 76
Warning: include(fantam/sq.htm): failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-12.1\www\rose.php on line 77
Warning: include(): in C:\Program Files (x86)\EasyPHP-12.1\www\rose.php on line 77
Mi sembra strano che ti indichi l’errore in
C:\Program Files (x86)\EasyPHP-12.1\www\rose.php
e non in
localhost/rose.php
127.0.0.1/rose.php
Posso darti del consigli di base:
1 – Ti da questo errore con tutti i files da includere ?
2 – Stai visualizzando il file dall’host locale ? Che sistema operativo usi? Usi localhost o 127.0.0.1 ?
3 – Utilizzi un include relativo o assoluto ?
4 – Ricontrolla che il file esista e che non abbia errori all’intero, a limite mettilo prima nella stessa cartella e prova un include relativo
perdonami quella corretta era:
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
;; Windows: “\path1;\path2”
include_path = “.;${path}\php\includes;C:\Programmi(x86)\EasyPHP-12.1\www\”
include_path = “.;C:\Programmi(x86)\EasyPHP-12.1\www\“
aggiungo che in php non esiste la cartella includes