2

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 "&amp;"
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() を使用する方がはるかに使いやすい方法です。特にそのポインターに感謝します。

4

6 に答える 6

5
  1. .htaccess の名前を htaccess.txt に変更する必要があるのはなぜですか?
  2. set_include_path()を使用して include_path を設定してみて、それが役立つかどうかを確認してください (中間修正として)。
  3. phpinfo()を介して使用する php.ini を確認します
于 2008-09-30T12:39:32.757 に答える
2

ini_set() を使用して、リクエストごとに include_path を変更できます。これにより、htaccess をまったく使用する必要がなくなります。

于 2008-09-30T12:37:27.503 に答える
1

メインのhttp.confファイルでAllowOverrideAllを有効にする必要があります。XAMPP_DIR / apache / conf / http.confの内部を見てください)

于 2008-09-30T20:39:35.083 に答える
1

私のhtaccessはXAMPPで正常に動作します-一部のモジュールはデフォルトで無効になっていますが-必要なモジュールが有効になっていることを確認しますか?

于 2008-09-30T13:00:10.697 に答える
1

あなたが探している検索フレーズは次のとおりだと思います。

AllowOverride すべて

私の推測では、xampp 内で、httpd.conf で (.htaccess を介して) AllowOverride を有効にする必要があります。これは、初心者がハッキング可能なプラットフォームをインストールするのを防ぐ簡単なセキュリティ対策です:P

于 2008-09-30T13:44:20.167 に答える
1

これを行うだけです:

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)

その働き

于 2015-09-09T18:46:47.230 に答える