2016-07-21 21 views
-2

私は同じ問題で別の質問を見ましたが、私のためにはうまくいきませんでした。PHP scandirが動作しません

質問:PHP scandir - multiple directories

私はJoomlaのを使用しています!私のサイトを作成するには (私はテンプレートを使ってすべてを作りますが、私は拡張機能の作成を理解していません)。

そこで、メインフォルダにpbfDataというフォルダを作成しました。 私はフォルダusersを作成しました。しかし、スキャンダルはそれらのどれも検出しません。

エラー(if (is_dir)なし)

Warning: scandir(/pbfData/) [function.scandir]: failed to open dir: No such file or directory in [...]/pbf/index.php on line 61 

Warning: scandir() [function.scandir]: (errno 2): No such file or directory in [...]/pbf/index.php on line 61 

Fatal error: Cannot access empty property in [...]/pbf/index.php on line 61 

コードは次のようになります。

class users { 

    var $users; 

    function refUsers() { 
    $dir = '/pbfData/'; 
    if (is_dir($dir)) { 
     $this->$users = scandir($dir); 
    } else { 
     echo "<b>CRITICAL ERROR: </b>No access to users directory."; 
    } 
    } 
[...] } 

それは CRITICAL ERROR: No access to users directory.

を出力する(注:はそれを解決するためにis_dirを加えることに答えるましたもう一つの質問ですが、私が書いたように、それはうまくいきません私のため。)

+0

あなたは= '/ pbfData /' '、その後' SCANDIR($ dirをを)やって、その後is_dir($ディレクトリ) 'チェック'と 'ので、もし' $ dirを設定しているだろう'$ directory'はあなたが' $ dir'から読み込んだ有効なディレクトリであり、有効なディレクトリではないかもしれません。 – apokryfos

+0

うまくいかなかった回答をリンクして理由を説明できますか? – Qaswed

+0

@apokryfos私は見たことがありませんでしたが、is_dirチェックがなくてもうまくいきませんでした。 – Soaku

答えて

0

is_dirは、ディレクトリパスを取得するソリューションではなく、ファイルがディレクトリかどうかを確認するだけです。パスを取得するには、Joomla内のJPATH_SITEまたはJPATH_BASEなどを使用できます。 Joomlaには既に定数が組み込まれています。ここを見てhttps://docs.joomla.org/Constants

あなたのコードは

$dir = JPATH_BASE."/pbfData", 
+0

それは動作します!ありがとう!しかし、まだ致命的なエラーがあります:61行目の[...]/pbf/index.phpの空のプロパティにアクセスできません。どういう意味なのか分かりませんが、私はそれを検索します... – Soaku

+0

@Soaku異なる質問を作成してコードを投稿できる場合は、私はあなたを助けることができるかもしれません。このリンクを確認することができます1. http://stackoverflow.com/questions/2715610/where-is-the-fatal-error-cannot-access-empty-property-in-the-php-class-functio 2. http ://stackoverflow.com/questions/20437751/cannot-access-empty-property-in-php。これはあなたを助けるかもしれません。 –

+0

oh ...今私が間違っていることが分かりました... '$ this-> users'の代わりに' $ this-> $ users'と書かれたとは思えません – Soaku

0

あなたはフォルダ/pdfData/が存在するかどうかをチェックし、パスが/で始まるので、あなたのROOTフォルダ内の名前pdfDataのフォルダを持っている場合、あなたが本当にチェックしていることですされている(C:\またはD:\ [など] linux/unixでは/)。あなた場合は、/あなたのROOTに

Folder structure 
---------------- 
/pdfData/ <-- This is the folder that your code check (which doesn't exists) 
/var/ 
/var/www/ 
/var/www/pdf/ 
/var/www/pdf/pdfData/ <-- This is the folder you want to check for 

をそのフォルダを持っていないので機能is_dir('/pdfData/')、falseを返します - あなたはスクリプト/var/www/html/pdf/index.phpを実行した場合、イベントはフォルダ/var/www/html/pdf/pdfDataを持っている場合ことを意味

:もう一つのオプションは、 __DIR__マジック定数を使用することです

あなたが(開始スラッシュなし)$dir = 'pbfData/';を使用する必要があり、あなたからあなたのコードを実行している現在のフォルダ内のフォルダpdfDataを確認したいです

$dir = __DIR__ . '/pbfData/'; 
+0

別のオプション:) – Dekel

関連する問題