2015-06-24 65 views
2

無法運行Ajax聊天的安裝腳本。看起來函數調用可以找到合適的$ filename,所以我無法確定無效參數是什麼。調試PHP錯誤:Ajax聊天安裝

in file [ROOT]/phpbb/di/container_builder.php on line 291: file_put_contents(C:/inetpub/wwwroot/phpbb3/chat/../cache/container_C:/inetpub/wwwroot/phpbb3/chatslashdotdotslash.php): failed to open stream: Invalid argument 

這裏是線284-291:

protected function dump_container($container_filename) 
{ 
    $dumper = new PhpDumper($this->container); 
    $cached_container_dump = $dumper->dump(array(
     'class'   => 'phpbb_cache_container', 
     'base_class' => 'Symfony\Component\DependencyInjection\ContainerBuilder', 
    )); 
    file_put_contents($container_filename, $cached_container_dump); 
} 

的函數調用$ container_filename是

protected function get_container_filename() 
{ 
    $filename = str_replace(array('/', '.'), array('slash', 'dot'), $this->phpbb_root_path); 
    return $this->phpbb_root_path . 'cache/container_' . $filename . '.' . $this->php_ext; 
} 

爲$ cached_container_dump函數變量是什麼,我認爲可能是問題,如上面第2行所示。我不確定base_class是否被找到,因爲它不在名稱空間中。一直試圖遵循這個幾天...任何幫助將不勝感激。

var_dump($ dumper)的結果在這裏:這是否意味着數組正在返回一個對象?

object(Symfony\Component\DependencyInjection\Dumper\PhpDumper)#13 (7) { ["inlinedDefinitions":"Symfony\Component\DependencyInjection\Dumper\PhpDumper":private]=> object(SplObjectStorage)#3325 (1) { ["storage":"SplObjectStorage":private]=> array(198) 

回答

0

與下面的一個替換您file_put_contents功能:

file_put_contents($container_filename, $cached_container_dump, FILE_APPEND); 

,並確保$dumper->dump()函數返回一個字符串。

+0

嗯。我已經對函數進行了更改,但我不清楚$ dumper-> dump()。它看起來像返回一個數組,但我想我將不得不追查'base_class',因爲我不確定那個數組是在那裏設置的。 –

0

您必須將冒號替換爲緩存文件名,因爲它不是Windows上的有效文件名字符。

+0

也許我錯過了一些東西,但是在任何緩存文件名中都沒有看到冒號? –

+0

您可以從'$ this-> phpbb_root_path'生成'$ filename'變量,該變量似乎包含'c:',您可以看到'.../cache/container_C:/ inetpub/...'的錯誤信息。儘管您試圖替換它們,但它仍然包含斜槓也很有趣。也許你應該檢查'get_container_filename()'是否被調用,如果是的話,設置它後'$ filename'的內容是什麼。 – fejese