2011-07-26 27 views
0

これは私の問題です。IIS 7 + PHP 5.3で動作するWebサイトがあります。ウェブサイト階層には、フラッシュファイルを含む仮想ディレクトリが "vd"と呼ばれています。IIS 7の仮想ディレクトリでPHPを使用してファイルにアクセスする方法

あるmyApplication
- test.phpを
- VD
        - animation1.swf
        - animation2.swf
- ...だから

、それはですブラウザーでswfファイルに簡単にアクセスできるようにするには、URLにディレクトリ名を入れてください:http://www.mySite.com/vd/animation1.swf

しかし、PHPスクリプトのアニメーションでgetimagesize()関数を使用したいと思います。しかし、この場合には、PHPはファイルを見つけることができません。とにかく「/」も、窓のための右のディレクトリ区切りではありませんので、

<?php 
    // test.php 
    var_dump(getimagesize('vd/animation1.swf')); // false 
?> 

を意味を成しているようです。しかし、私はちょうど仮想ディレクトリを介してgetimagesizeの作品を作る方法を見つけることができない、私は成功なしで多くのものを試した(realpath()関数を使用して... DIRECTORY_SEPARATOR定数を使用して...)。

もちろん、スクリプトで実際のパスを使用することはできますが、仮想パスを通してそのパスを実行することは容易になります。

お手数をおかけしますようお願い申し上げます。 ありがとうございます!

+0

私は、この問題はディレクトリセパレータではなく、パスの問題であると付け加えます。 –

答えて

1

PHPはWebサーバーを経由せず、ファイルを取得するためのOSです。したがって、Webサーバーの仮想から実への変換は行われません。ファイルの実際のパスを使用する必要があります。ファイルに対してWebリクエストを行い、そのようにサイズを推測することはできますが、それは非常に非効率的です。それはちょうどOSを通してそれをちょうどすることがはるかに理にかなっています。

変数/ define/class定数を作成するか、適切なディレクトリの実際のパスを格納することを好みます。次にコードにanimation1.swfを追加します。

+0

.swfファイルへの完全な絶対URLを提供することによって、http層を通過するようにPHPを強制することもできますが、これは深刻な考えですらあまりにも痛い考えです。 –

+0

@Marc B:それは私が「あなたがウェブリクエストをすることができる」と言ったときに言いました。私はそれが問題を解決する方法ではないことに同意します。 – webbiedave

+0

ありがとう。クラス定数を使用して、提案したとおりにファイルへのパスを保存します。 – JuCachalot

関連する問題