Impostazione del percorso di inclusione in PHP non riesce a intermittenza
-
09-06-2019 - |
Domanda
Ho provato entrambi :
ini_set('include_path', '.:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes');
e anche :
php_value include_path ".:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes"
nell' .il file htaccess.
Entrambi i metodi effettivamente fare il lavoro ma solo a intermittenza.Che è, che funziona bene per circa 37 pagine richieste e quindi non riescono a circa 42 pagine richieste risultante in un require() chiamata a causa di un errore irreversibile in modo efficace blocca il sito.
Io non sono nemmeno sicuro da dove cominciare cercando di capire che cosa sta succedendo!
Sembra che si duplicato la directory corrente nel vostro percorso di inclusione.Provare a rimuovere uno dei '.:' da una stringa.
La versione dello script è stato originariamente
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');
e così il .:.:era venuta dal tracciato esistente:
ini_get('include_path')
Ho cercato di rimuoverlo e comunque il problema persiste.
Soluzione
È venuto fuori che il problema era legato ad un bug di PHP in 5.2.5
L'impostazione di un "admin_flag" per include_path causato il percorso di inclusione vuoto in alcune richieste, e Plesk imposta un admin_flag nella configurazione di default per qualcosa o altro.Un aggiornamento di PHP risolto il problema.
Altri suggerimenti
Hai provato set_include_path()?.Come vantaggio restituisce false in caso di fallimento, che consente di almeno prendere l'avvenimento e generare alcuni significativi dati di debug.Inoltre, si dovrebbe utilizzare il costante PATH_SEPARATOR
come si differenzia tra windows / *nix.
Come esempio specifico:
set_include_path('.' . PATH_SEPARATOR . './app/lib' . PATH_SEPARATOR . get_include_path());
(il get_include_path() alla fine significa che qualunque sia il vostro ini / htaccess percorso viene impostato restano)
Sembra che si duplicato la directory corrente nel vostro percorso di inclusione.Provare a rimuovere uno dei '.:' da una stringa.