web-dev-qa-db-ja.com

file_exists()がおかしい

Csvファイルからデータを取り出そうとしていますが、file_exists()と一緒に使用するとファイルが存在しないとget_template_directory_uri()が言っているので動けなくなります。

これは短いコードです:

function getPeopleNumber() {
    $csv = get_template_directory_uri().'/report/report.csv';
    $delimiter=',';
    if(!file_exists($csv) || !is_readable($csv)) {
        return FALSE;
    }
    $header = NULL;
    $data = array();
    if (($handle = fopen($csv, 'r')) !== FALSE) {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
            if(!$header) {
                $header = $row;
            }
            else $data[] = array_combine($header, $row);
        }
        fclose($handle);
    }
    return $csv;
}

もし私がecho $csvを実行した場合、完全な(そして正しい)パスがあります。

しかしそれでもこの関数はFALSEを返します。何がおかしいのですか?

1
Leon

あなたはget_template_directory_uri()を使っています、それはPATHではなくURLです。

代わりにget_template_directory()を使用してください、それはPATHを返します。好きです:

$csv = get_template_directory() . '/report/report.csv';
2
Fayaz