Domanda

Sto cercando di usare la funzione integrata di PHP get_browser (). Ho seguito le istruzioni in questo post utile, ma sto ancora ricevendo l'errore

Direttiva INI Browscap non impostata.

Ho scaricato il file php_browscap.ini e l'ho spostato nella stessa directory del mio file .htaccess, in modo che la sua posizione sia home/hostname/subdomin/php_browscap.ini Dal momento che non ho accesso al mio php.ini File, sto provando a modificare la proprietà BrowsCap usando .htaccess. Questo è quello che ho inserito:

php_value browscap home/hostname/subdomain/php_browscap.ini

Non so se sia importante, ma sotto che c'è un codice motore di riscrittura.

Come indicato, sto ancora ricevendo l'errore sopra. Cos'ho fatto di sbagliato?

Grazie.

È stato utile?

Soluzione

Fai un phpinfo () per comprendere la configurazione di runtime PHP. Se il sistema è configurato come "CGI/FastCGI", probabilmente sta eseguendo SUPHP come iniziatore PHP. In questo caso puoi specificare il tuo file Php.ini. Per impostazione predefinita SUPHP guarda nella directory dello script ma è possibile prevalere con la seguente direttiva nel tuo file .htaccess:

suPHP_ConfigPath (expects a path name)

Questa opzione indica a Mod_suPHP quale percorso trasmette al Php-Interpreter (impostando la variabile di ambiente PHPRC). Fare NON Fare riferimento a un file ma alla directory il file resiste.

EG: se si desidera utilizzare "/path/to/server/config/php.ini", utilizzare "suphp_config/percorso/to/server/config".

Se non si utilizza questa opzione, PHP utilizzerà il suo percorso compilato. Inoltre è necessario utilizzare un percorso correttamente formato nella direttiva browsercap, ad esempio

browscap="/home/hostname/subdomain/php_browscap.ini"

(Nota il principale /)

Addendum

Ho appena controllato e il piano di hosting condiviso Dreamhost utilizza Suexec. Con Suexec puoi normalmente sovrascrivere la patch php.ini copiando il sistema php.ini (phpinfo () ti dice dove trovarlo) in una directory privata, diciamo _privato così come il browsercap.ini quindi aggiungendo

SetEnv PHPRC /home/hostname/_private

al tuo file .htaccess. Se questo non funziona, il problema è specifico per la configurazione Suexec di Dreamhost e devi chiedere a questa Q http://discussion.dreamhost.com/

Altri suggerimenti

Il browscap Il valore PHP ha una modalità mutevole di PHP_INI_SYSTEM Significa che può essere impostato solo in php.ini o httpd.conf (non .htaccess).

Ci sono due potenziali problemi qui.

  1. Forse il tuo host non ti consente di sovrascrivere le impostazioni INI nel file .htaccess.
  2. Forse a Browscap non piace il percorso che hai fornito. Provare:

    php_value browscap /home/hostname/subdomain/php_browscap.ini
    

    E assicurarsi che le autorizzazioni su quel file consentano all'utente Web di leggerlo.

Se sei su un hosting condiviso e non hai accesso al sistema PHP.ini, è possibile utilizzare la seguente sostituzione autonoma dell'implementazione nativa "get_browser ()" nativa di PHP.

https://github.com/garetjax/phpbrowscap

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top