0

よし、ほとんどHtaccessにこれがある

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index2.php?url=$1

そして、次のphpファイルで実行しようとしています

mime_content_type('Doggy.png')

ファイルのパスが見つからないというエラーが返されますが、それが存在することは確かです。エラーの可能性を見つけようとして、htaccessだと思って終了しました。

誰でもこれを解決するのを手伝ってもらえますか?

よろしくお願いします。

4

2 に答える 2

0

すでに確立したように、問題は書き換えルールにあるわけではありません。

実際に重要なのは、ファイルの相対位置ではなく、作業ディレクトリに対するイメージ ファイルの相対位置です。

たとえば、ディレクトリ構造が次の場合:

/
/index.php
/inc/imagelib.php
/inc/Doggy.png

から Doggy の操作を行っていますがimagelib.php、実際にはから含まindex.phpれており、作業ディレクトリはです。同じフォルダーにあるにもかかわらず/、ファイルを としてアドレス指定する必要があります。inc/Doggy.png

作業ディレクトリは、プログラムのエントリ ポイント (Web アプリケーションの場合 - 最初に要求を取得したファイルの場所) に応じて、または (コマンド ラインの場合) シェルのどこにいるかによって変わる場合があります。コマンド実行時。

相対パスの問題を避けるために、絶対パスを使用することをお勧めします。

そのため (前の例と同じシナリオを想定)、imagelib.php次のようにイメージ パスへのパスを作成する必要があります。

`$absolute_path = dirname(__FILE__)."/Doggy.png"`
于 2012-07-04T08:03:47.430 に答える
0

いいえ、それはあなたの .htaccess ルールではありません。これらは、 HTTP リクエストをファイル実行ルールに書き換えるだけです。PHP が実行されると、それらはもはや何の影響も与えません。

問題は、このコマンドが実行されたファイルに対して相対的にDoggy.pngファイルが存在しないことです。ファイルは、行を含むファイルであると仮定して、 と同じディレクトリにある必要があります。それ以外の場合は、またはのような相対パスを使用する必要があります。index2.phpmime_content_type('Doggy.png')mime_content_type('../Doggy.png')mime_content_type('img/Doggy.png')

于 2012-07-03T14:48:24.310 に答える