htaccessファイル、php、ディレクトリを含む、Windows XAMPP構成の悪夢
質問
XAMPPを使用すると、WindowsのローカルLAMPスタックを簡単に構成できます。そのため、htaccessファイルを有効にするのは非常に悪夢です。
私の問題:
アプリケーションに含まれる/ includes /ディレクトリを検索するためにapache / phpを必要とするPHPアプリケーションがあります。これを行うには、Apacheでhtaccessファイルを許可し、htaccessファイルでincludeディレクトリの場所を正確に指定する必要があります。
問題は、これらのhtaccessファイルを表示するためのApache設定を取得できないことです。私はuniでこのアプリをインストールし、セットアップを支援するためにそこに管理者を配置するという大きな手間がかかりました。これはそれほど難しくないはずですが、何らかの理由で、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>
次に含まれるhtaccessファイル全体は次のとおりです。 c:\ xampp \ htdocs \ application \ htaccess.txt
<Files ~ "\.incWarning: 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
quot;>
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="
includesディレクトリは指定された場所に存在します。
アプリケーションにアクセスしようとすると、次のエラーが表示されます。
<*>致命的なエラー:require()[function.require]:C:\ xampp \ htdocsで必要な 'include.general.inc'(include_path = '.; C:\ xampp \ php \ pear \ random')のオープンに失敗しました21行目の\ application \ menu \ logon.php
インクルードパスc .. \ random \は、上記のphp.iniファイルで指定されています。 xamppのインストールは、htaccess.txtファイルで指定されている別のインクルードパスの許可に失敗します。
助けてください!おそらくhttpd.confまたはhtaccess.txtファイルにエラーがあると推測していますが、htaccessファイルを読み取っていないようです。投稿の冗長性を許すように、できる限り徹底的にしようとしました。
回避策は、phpファイルにinclude_pathを追加するだけでよいことを知っていますが、アプリを展開する予定の場所でphp.iniファイルにアクセスすることはできません。ただし、サーバー管理者にhtaccessファイルを許可するようリクエストすることはできます。
更新:htacces.txtの名前を.htaccessに変更し、httpd.confファイル内の適切なディレクティブを修正しました。すべて機能しているようです。アプリケーションは、htaccess.txtの命名とhttpdの修正されたディレクティブを提案しました。これらは明らかに間違っています(少なくともxamppスタックの場合)。助けてくれてありがとう。
ところで、アプリを複数の場所に展開する必要がある場合は、ini_set()を使用する方がはるかに使いやすい方法なので、特にそのポインターに感謝します。
解決
- .htaccessの名前をhtaccess.txtに変更する必要があるのはなぜですか
- set_include_path()を使用してinclude_pathを設定し、それが役立つかどうかを確認します(中間修正として)
- phpinfo() を使用して、使用するphp.iniを確認します。
他のヒント
ini_set()を使用して、リクエストごとにinclude_pathを変更できます。これにより、htaccessを使用する必要がまったくなくなります。
私のhtaccessはXAMPPで正常に動作します-一部のモジュールはデフォルトで無効になっていますが、必要なモジュールが有効になっていますか?
お探しの検索フレーズは次のとおりです:
xampp内では、httpd.confでAllowOverrideを(.htaccessを介して)有効にする必要があると思います。これは、初心者がハッキング可能なプラットフォームをインストールできないようにする簡単なセキュリティ対策です。P
メインのhttpd.confファイルでAllowOverride Allを有効にする必要があります。 XAMPP FOR / apache / conf / http.confの中を見てください)
単にこれを行う:
open file ...\xampp\apache\conf\httpd.conf
find line "LoadModule rewrite_module modules/mod_rewrite.so"
if here is a # before this line remove it.(remove comment)
その動作