2013-08-24 69 views
0

我試圖嘗試使用file_exists函數調試以下代碼。我已經在頭像目錄上運行了一個var_dump,它總是以bool(false)的形式返回。我不知道爲什麼。我測試了下面的代碼,它到達文件存在,但它每次都證明if語句爲false。有什麼想法嗎?我看過了,圖像正確地在目錄中。文件存在問題

$default_avatar = 'default.jpg'; 
$avatar_directory = base_url() . 'assets/globals/images/avatars/'; 
if (!is_null($user_data->avatar)) 
{ 
    $avatar = $avatar_directory . $user_data->avatar; 
    if (file_exists($avatar)) 
    { 
     $user_data->avatar = $avatar_directory . $user_data->avatar; 
    } 
    else 
    { 
     $user_data->avatar = $avatar_directory . $default_avatar; 
    } 
} 
else 
{ 
    $user_data->avatar = $default_avatar; 
} 
+1

'base_url()'的價值是什麼? –

+0

最簡單的方法是回顯'$ avatar'並根據你的foldr結構檢查它的正確路徑。 – mithunsatheesh

+2

你爲什麼要使用本地目錄的URL? –

回答

1
$default_avatar = 'default.jpg'; 
$avatar_directory = 'assets/globals/images/avatars/'; 
if (!is_null($user_data->avatar)) 
{ 
    $avatar = $avatar_directory . $user_data->avatar; 
    if (file_exists(FCPATH . $avatar)) 
    { 
     $user_data->avatar = base_url() . $avatar_directory . $user_data->avatar; 
    } 
    else 
    { 
     $user_data->avatar = base_url() . $avatar_directory . $default_avatar; 
    } 
} 
else 
{ 
    $user_data->avatar = $default_avatar; 
} 
+0

這是可行的,但是FCPATH常量 – user2576961

+0

這是一個在index.php中定義的codeigniter常量。所以你應該在這個問題中增加一個'codeigniter'標籤 –

+0

'FCPATH'是這個文件的完整服務器路徑。定義爲'define('FCPATH',__FILE __);'參考http://cxzcxz.com/xref/codeigniter-1.7.1/nav.html?_constants/index.html – bansi

1

從名字base_url似乎是一個函數,將得到一個url像http://www.mysite.com,不會做本地目錄職能的工作。

你需要像getcwd或完整路徑

GETCWD將獲得當前的工作目錄(其中初始腳本從執行的目錄):

//If say script.php was exectued from /home/mysite/www 
$avatar_directory = getcwd() . '/assets/globals/images/avatars/'; 

//$avatar_directory would be 
/home/mysite/www/assets/globals/images/avatars/ 
+0

雖然這是一個實時網址,但這不適用於本地目錄。 – user2576961

+0

[file_exists](http://us2.php.net/manual/en/function.file-exists.php)用於查看本地文件是否存在,而不是URL是否可讀。 –

1

假設你的意思是BASE_URL()指向您的項目的根源 -

$file = __DIR__ . "/path/to/file.ext"; 

    if (file_exists($file)) { 

     //... 

    } 

或其一些變化。這也適用於:

__DIR__ . "/.." 
  • 它解析爲__DIR__父目錄。

看到PHP的魔術常量:

http://php.net/manual/en/language.constants.predefined.php

如果你正在尋找一個遠程資源 - 而不是位於您的本地文件系統的一個文件 - 你必須改變你的php.ini以允許。這可能不是一個好主意,這通常不被認爲是安全的或安全的。完全一樣。

http://php.net/manual/en/features.remote-files.php

及注意事項:

"This function returns FALSE for files inaccessible due to safe mode restrictions. However these files still can be included if they are located in safe_mode_include_dir." 

- 從http://php.net/manual/en/function.file-exists.php

- 編輯的基礎上添加從OP評論相關信息。

1

嗯,這是雙向CLI並通過Apache等...:

$avatar_directory = substr(str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', __FILE__), 0, -1) . '/assets/globals/images/avatars/' 

的沒有返回的是一個php文件本身,而不是由根。