安裝Ecshop首頁出現報錯:Only variables should be passed by referen

出現下面這就話:php

Strict Standards: Only variables should be passed by reference in E:\Tools\ECShop_V2.7.3_UTF8_release1106\upload\includes\cls_template.php
on line 418

第418行:$tag_sel = array_shift(explode(' ', $tag));
解決辦法 1 
5.3以上版本的問題,應該也和配置有關 只要418行把這一句拆成兩句就沒有問題了  $tag_sel = array_shift(explode(' ', $tag));
改爲: $tag_arr = explode(' ', $tag); 
$tag_sel = array_shift($tag_arr);
(實驗過,絕對可行) 由於array_shift的參數是引用傳遞的,5.3以上默認只能傳遞具體的變量,而不能經過函數返回值 
解決辦法 2 : 或則若是這樣配置的話: error_reporting = E_ALL | E_STRICT


php.ini中有以下設置:
error_reporting = E_ALL | E_STRICT
 
這是說,顯示那些不符合編碼規範的警告(coding standards warnings)。
 
Joomla實際上是建議取消error的輸出,若是出於調試須要,應改成
error_reporting = E_ALL & ~E_NOTICE
 
問題獲得解決。
 
下面是錯誤輸出配置的原文:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
; This directive informs PHP of which errors, warnings and notices you would like
; it to take action for. The recommended way of setting values for this
; directive is through the use of the error level constants and bitwise
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what
; development servers and development settings are for.
; Note: The php.ini-development file has this setting as E_ALL | E_STRICT. This
; means it pretty much reports everything which is exactly what you want during
; development and early testing.
;
; Error Level Constants:
; E_ALL            - All errors and warnings (includes E_STRICT as of PHP 6.0.0)
; E_ERROR          - fatal run-time errors
; E_RECOVERABLE_ERROR  - almost fatal run-time errors
; E_WARNING        - run-time warnings (non-fatal errors)
; E_PARSE          - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                   from a bug in your code, but it's possible that it was
;                   intentional (e.g., using an uninitialized variable and
;                   relying on the fact it's automatically initialized to an
;                   empty string)
; E_STRICT          - run-time notices, enable to have PHP suggest changes
;                   to your code which will ensure the best interoperability
;                   and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                   initial startup
; E_COMPILE_ERROR  - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE    - user-generated notice message
; E_DEPRECATED      - warn about code that will not work in future versions
;                   of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
;  E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.)
;  E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices)
;  E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
;  E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL & ~E_NOTICE    ------默認
; Development Value: E_ALL | E_STRICT  ------開發用
; Production Value: E_ALL & ~E_DEPRECATED -- 正式發佈用
; http://php.net/error-reporting
;error_reporting = E_ALL | E_STRIC
相關文章
相關標籤/搜索