2010-11-05 15 views
5

Tôi có PHP phản lỗi tràn ngập các file log và trang tình trạng Drupal như thế này:PHP bị phản đối cảnh báo trên các trang Drupal mặc dù biến chúng tắt trong php.ini

: Function ereg() is deprecated in mysite/includes/file.inc on line 893. 

tôi sẽ có thể tắt lỗi E_DEPRECATED trong tôi php.ini, nhưng nó là có không có tác dụng dù đã được thiết lập để:

error_reporting = E_ALL & ~E_DEPRECATED 

phpinfo() báo cáo error_reporting giá trị tổng thể và giá trị địa phương cả 22527.

tôi đã làm một

grep -R error_reporting 

trong gốc tài liệu của tôi với hy vọng tìm thấy bất kỳ mức độ lỗi cứng mã hoá và không có may mắn:

./includes/common.inc: // If the @ error suppression operator was used, error_reporting will have 
./includes/common.inc: if (error_reporting() == 0) { 
./modules/system/system.module: 'page arguments' => array('system_error_reporting_settings'), 
./modules/system/system.admin.inc:function system_error_reporting_settings() { 
./modules/system/system.install:  $err = error_reporting(0); 
./modules/system/system.install:  error_reporting($err); 

Không có gì mà tôi có thể thấy rằng là supect trừ có thể là dòng đầu tiên trong system.install nhưng nếu tôi đúng thì nên tắt tất cả các lỗi OFF.

Tôi không đặt error_reporting bằng .htaccess, nhưng thực hiện điều đó cũng không có tác dụng.

Tôi hy vọng rằng có một giải pháp không liên quan đến mức lỗi mã hóa cứng trong common.inc (mà DOES hoạt động, tôi đã thử - nhưng rõ ràng là không mong muốn).

Tôi biết lỗi không được chấp nhận là kết quả của việc nâng cấp lên PHP 5.3, nhưng hạ cấp PHP không phải là tùy chọn (trang web mới hiện đang hoạt động trên cùng một máy chủ đã được thử nghiệm trên 5.3 và trang web nơi xảy ra lỗi này 2 tháng để sống). Tôi cũng không thể nâng cấp lên phiên bản Drupal mà chơi độc đáo với 5.3 như không may là chủ sở hữu trước đã hủy bỏ các mô-đun lõi mà không cần ghi lại các thay đổi của mình.

Version thứ:

PHP 5.3.2-1, Ubuntu 10.04, Drupal 6.13 trên một trang web, 6.5 (! !! 1) mặt khác, Apache 2.2

+0

Từ cuộc gọi 'system_error_reporting_settings', có vẻ như có cài đặt cho việc này. Điều gì về cố gắng để sửa đổi nó đầu tiên? –

Trả lời

0

Tôi không biết về tắt báo cáo lỗi nhưng bạn có thể thay thế tất cả các chức năng ereg bằng preg_match ..!

+0

Hy vọng thực hiện các thay đổi tối thiểu đối với mã, lưu ý rằng sẽ có các cuộc gọi không được chấp nhận trong một loạt địa điểm, bao gồm cả mã lõi. – iftheshoefritz

+0

Để các kỹ sư của Microsoft ẩn lỗi = p hoặc đợi Drupal 7 ..! – MatTheCat

3

Bạn có cố gắng chỉnh sửa index.php là


error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED); 

require_once './includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
2

Tôi đã sử dụng này trong hồ sơ php.ini của tôi và có thể che giấu những lỗi phản đối. Hy vọng nó sẽ giúp bạn! =)

error_reporting = E_ALL & ~E_DEPRECATED & -E_WARNING 
Các vấn đề liên quan