2012-07-07 72 views
0

我想部署我的PHP網站在Godaddy Windows與IIS7共享主機。 我的網站使用phpThumb庫來生成縮略圖。phpThumb寫測試失敗

但不顯示圖像大拇指,我得到:

用法:/########/filename.jpg閱讀詳細

當我檢查使用評論phpThumb.demo.check.php,紅色錯誤發生在高速緩存寫入測試如下

D:/Hosting/###########/cache/6/67/67c/67c4/phpThumb_cache_########__raw67c44e91c46b79493d95da579a7fef28_par52b4fbd9e2256843fcdbe9d1f35f2875.jpeg 
directory does NOT exist (before EnsureDirectoryExists()) 
directory does NOT exist (after EnsureDirectoryExists()) 
write test FAILED 

目錄D:/Hosting/########### /緩存已經存在,並且已經改變爲可寫的godaddy文件管理器。

但我注意到「緩存目錄」和「臨時目錄」檢查結果都是「存在/可讀/可寫」。

雖然緩存目錄是存在/可讀/可寫的,爲什麼phpThumb會給出「寫入測試失敗」?當我檢查緩存文件夾時,創建了CacheStart.txt文件。

回答

0

對於Godaddy windows共享主機,我做了以下更改併爲我工作。可能還有其他更好的解決方案,但我只是嘗試快速改變爲我工作。

在phpthumb.functions.php //這將解決創造緩存目錄子文件夾,可選沒有它緩存不會產生

static function EnsureDirectoryExists($dirname) { 
    $dirname = str_replace('/', DIRECTORY_SEPARATOR, $dirname); //added for godaddy 
    $directory_elements = explode(DIRECTORY_SEPARATOR, $dirname); 
    $startoffset = 5; //added for godaddy 

    /* comment for godaddy 
    $startoffset = (!$directory_elements[0] ? 2 : 1); // unix with leading "/" then start with 2nd element; Windows with leading "c:\" then start with 1st element 
    $open_basedirs = preg_split('#[;:]#', ini_get('open_basedir')); 
    foreach ($open_basedirs as $key => $open_basedir) { 
     if (preg_match('#^'.preg_quote($open_basedir).'#', $dirname) && (strlen($dirname) > strlen($open_basedir))) { 
      $startoffset = count(explode(DIRECTORY_SEPARATOR, $open_basedir)); 
      break; 
     } 
    } 
    */ 
    $i = $startoffset; 
    ..... 

在phpthumb.class.php //這是必需的,沒有它源文件路徑出錯了

function ResolveFilenameToAbsolute($filename) { 
    .... 
    if ($this->iswindows) { 
     //$AbsoluteFilename = preg_replace('#^'.preg_quote(realpath($this->config_document_root)).'#i', realpath($this->config_document_root), $AbsoluteFilename); 
     $AbsoluteFilename = str_replace(DIRECTORY_SEPARATOR, '/', $AbsoluteFilename); 
    .....