1

PHP の組み込み関数get_browser()を使用しようとしています。この便利な投稿の指示に従いましたが、 まだエラーが発生します

browscap ini ディレクティブが設定されていません。

php_browscap.ini ファイルをダウンロードし、.htaccess ファイルと同じディレクトリに移動して、その場所がhome/hostname/subdomain/php_browscap.iniになるようにしました。php.iniファイルにアクセスできないので、試しています。 .htaccess を使用して browscap プロパティを編集します。これは私が入力したものです:

php_value browscap home/hostname/subdomain/php_browscap.ini

それが重要かどうかはわかりませんが、その下に Rewrite Engine のコードがあります。

前述のように、私はまだ上記のエラーが発生しています。私は何を間違えましたか?

ありがとう。

4

4 に答える 4

4

browscapPHPの値には変更可能なモードがPHP_INI_SYSTEMあり、php.ini または httpd.conf でのみ設定できます (.htaccess では設定できません)。

于 2012-02-25T13:10:19.670 に答える
3

phpinfo()を実行して、PHPランタイム構成を理解します。システムが「CGI/FastCGI」として構成されている場合は、おそらくPHPイニシエーターとしてsuPHPを実行しています。この場合、独自のphp.iniファイルを指定できます。デフォルトでは、suPHPはスクリプトディレクトリを検索しますが、.htaccessファイルで次のディレクティブを使用してこれを上書きできます。

suPHP_ConfigPath (expects a path name)

このオプションは、(PHPRC環境変数を設定することにより)PHPインタープリターに渡すパスをmod_suphpに指示します。ファイルを参照するのではなく、ファイルが抵抗するディレクトリを参照してください

例:「/ path / to / server / config / php.ini」を使用する場合は、「suPHP_Config / path / to / server/config」を使用します。

このオプションを使用しない場合、PHPはコンパイル済みのデフォルトパスを使用します。 また、browsercapディレクティブで適切に形成されたパスを使用する必要があります。

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

(先頭の/に注意してください)

補遺

確認したところ、Dreamhost共有ホスティングプランはsuEXECを使用しています。suEXECを使用すると、通常、システムphp.ini(phpinfo()がこれを見つける場所を示します)をプライベートディレクトリ(たとえば、_privateとbrowsercap.ini )にコピーして、php.iniパッチをオーバーライドできます。

SetEnv PHPRC /home/hostname/_private

.htaccessファイルに。これが機能しない場合、問題はDreamhostのsuEXEC構成に固有であり、http: //discussion.dreamhost.com/でこのQを尋ねる必要があります。

于 2012-02-25T15:18:58.030 に答える
0

共有ホスティングを使用していて、システムの php.ini にアクセスできない場合は、php のネイティブな "get_browser()" 実装の次のスタンドアロン置換を使用できます。

https://github.com/garetjax/phpbrowscap

于 2012-02-25T14:58:01.213 に答える
0

ここには 2 つの潜在的な問題があります。

  1. おそらく、ホストが .htaccess ファイルの ini 設定をオーバーライドすることを許可していない可能性があります。
  2. たぶん、browscap はあなたが提供したパスを気に入らないでしょう。試す:

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

    また、そのファイルに対するアクセス許可で、Web ユーザーがそのファイルを読み取れるようにします。

于 2012-02-25T13:03:34.820 に答える