XAMPP を使用すると、Windows のローカル LAMP スタックを簡単に構成できます。そのため、htaccess ファイルを有効にするのが非常に悪夢であることは非常に残念です。
私の問題:
アプリケーション内に含まれる /includes/ ディレクトリを検索するために apache/php を必要とする PHP アプリケーションがあります。これを行うには、htaccess ファイルが apache で許可されている必要があり、htaccess ファイルはインクルード ディレクトリの場所を正確に指定する必要があります。
問題は、これらの htaccess ファイルを表示するための Apache 構成を取得できないことです。このアプリを大学にインストールし、管理者にセットアップを手伝ってもらうのは大変でした。これはそれほど難しいことではありませんが、何らかの理由でApacheをうまく動作させることができません。
これは私のセットアップです:
c:\xampp
c:\xampp\htdocs
c:\xampp\apache\conf\httpd.conf - 以下に示す変更を行った場所
c:\xampp\apache\bin\php.ini - このファイルの変更場所PHP のインストールに影響を与える
c:\xampp\php\php.ini の変更は意味がないことに注意してください。これは、PHP のインストールに影響を与える ini ではありません。
次の行は、httpd.conf ファイルに追加したものです。
#AccessFileName .htaccess
AccessFileName htaccess.txt
#
# The following lines prevent .htaccess and .htpasswd
# files from being viewed by Web clients.
#
#<Files ~ "^\.ht">
<Files ~ "^htaccess\.">
Order allow,deny
Deny from all
</Files>
<Directory "c:/xampp/htdocs">
#
# AllowOverride controls what directives may be placed in
# .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
以下は、c:\xampp\htdocs\application\htaccess.txt に含まれる htaccess ファイル全体です。
<Files ~ "\.inc$">
Order deny,allow
Deny from all
</Files>
php_value default_charset "UTF-8"
php_value include_path ".;c:\xampp\htdocs\application\includes"
php_value register_globals 0
php_value magic_quotes_gpc 0
php_value magic_quotes_runtime 0
php_value magic_quotes_sybase 0
php_value session.use_cookies 1
php_value session.use_only_cookies 0
php_value session.use_trans_sid 1
php_value session.gc_maxlifetime 3600
php_value arg_separator.output "&"
php_value url_rewriter.tags "a=href,area=href,frame=src,input=src,fieldset="
インクルード ディレクトリは、指定された場所に存在します。
アプリケーションにアクセスしようとすると、次のエラーが表示されます。
Warning: require(include.general.inc) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs\application\menu\logon.php on line 21
致命的なエラー: require() [function.require]: C:\xampp\htdocs\application\ で必要な 'include.general.inc' (include_path='.;C:\xampp\php\pear\random') を開けませんでした21行目のmenu\logon.php
インクルード パス c..\random\ は、上記の php.ini ファイルで指定されています。xampp のインストールでは、htaccess.txt ファイルで指定されている別のインクルード パスを許可できません。
助けてください!おそらくhttpd.confまたはhtaccess.txtファイルにエラーがあると思います..しかし、htaccessファイルを読み取っていないようです。私はできる限り徹底的にしようとしたので、投稿の冗長性を許してください.
include_path を php ファイルに追加するだけで回避できることがわかりましたが、アプリをデプロイする予定の場所にある php.ini ファイルにアクセスすることはできません。ただし、サーバー管理者に htaccess ファイルを許可するように要求することはできます。
更新: htacces.txt の名前を .htaccess に変更し、httpd.conf ファイル内の適切なディレクティブを修正しました。すべてが機能しているようです。アプリケーションは、htaccess.txt の命名と httpd の修正されたディレクティブを提案しました。これらは明らかに間違っています (少なくとも xampp スタックの場合)。助けてくれてありがとう。
ところで、アプリを複数の場所に展開する必要がある場合は、ini_set() を使用する方がはるかに使いやすい方法です。特にそのポインターに感謝します。