有幾個網站是PHPCMS V9作的,但這兩天發現一個問題,PHPCMS 的錯誤日誌超過了20M ,後臺報警,而後我看了下錯誤日誌,其中兩萬多行都是一個錯誤,錯誤信息以下:php
1 |
<? php exit;?>11-03 10:24:46 | 2048 | Only variables should be passed by reference | caches/caches_model/caches_data/content_output.class.php | 79 |
而後查找 根源 caches/caches_model/caches_data/content_output.class.php 的第79行 數組
1 |
extract(string2array( $this ->fields[ $field ][ 'setting' ])); |
PHP extract() 函數從數組中把變量導入到當前的符號表中。
對於數組中的每一個元素,鍵名用於變量名,鍵值用於變量值。 緩存
因而我懷疑extract()的參數不是數組 形成的。 函數
因爲報錯的這個位置試過緩存文件,找到源文件的位置爲 網站
網站根目錄/phpcms/modules/content/fields/box/output.inc.php
this
修改文件裏面的 spa
1 |
extract(string2array( $this ->fields[ $field ][ 'setting' ])); |
1 |
$setting = string2array( $this ->fields[ $field ][ 'setting' ]); is_array ( $setting ) && extract( $setting ); |
這樣,先判斷下extract()的參數是否是一個數組,若是是數組的話,才執行extract(),這樣就避免錯誤, 日誌
而後在PHPCMS 更新緩存,這樣後面就不會報錯了 code