2010-11-05 20 views
5

Tôi rất muốn cập nhật một số máy chủ của mình lên PHP 5.3. Điều này sẽ sẵn sàng cho Zend Framework 2 và cũng cho các cập nhật hiệu suất rõ ràng. Thật không may, tôi có một lượng lớn mã di sản trên các máy chủ này trong thời gian sẽ được khắc phục, nhưng không thể sửa tất cả trước khi di chuyển. Tôi đang xem xét cập nhật nhưng vô hiệu hóa các lỗi chức năng không được chấp nhận trên tất cả, nhưng một vài trang web phát triển nơi tôi có thể bắt đầu làm việc thông qua việc cập nhật mã cũ.Cập nhật lên PHP 5.3 với cảnh báo chức năng không dùng nữa bị vô hiệu hóa

error_reporting(E_ALL^E_DEPRECATED); 

Có lý do cơ bản nào khiến đây là ý tưởng tồi không?

Trả lời

3

Nếu bạn chưa có, bạn nên đọc số migration guide với tiêu điểm cụ thể trên Backward Incompatible ChangesRemoved Extensions.

Bạn có vấn đề lớn hơn việc ngừng sử dụng. Bỏ qua E_DEPRECATED sẽ không đủ. Do những thay đổi không tương thích nên cũng sẽ có các loại lỗi khác hoặc, thậm chí tệ hơn, các hành vi không mong muốn.

Dưới đây là một ví dụ đơn giản:

<?php 
function goto($line){ 
    echo $line; 
} 
goto(7); 
?> 

Mã này sẽ hoạt động tốt và đầu ra 7 trong PHP 5.2.x nhưng sẽ cung cấp cho bạn một lỗi phân tích cú pháp trong PHP 5.3.x.

Những gì bạn cần làm là lấy từng mục trong hướng dẫn đó và kiểm tra mã của bạn và cập nhật khi cần. Để làm điều này nhanh hơn, bạn có thể bỏ qua chức năng không được chấp nhận trong giai đoạn đầu tiên và chỉ tắt báo cáo lỗi cho E_DEPRECATED, nhưng bạn không thể giả định rằng bạn sẽ chỉ nhận được một số cảnh báo vô hại khi chuyển sang một chi nhánh PHP chính khác.

Cũng đừng quên việc hack của bạn và khắc phục sự cố không được dùng càng sớm càng tốt.

Kính trọng,
Alin

Lưu ý: Tôi cố gắng để trả lời các câu hỏi từ một quan điểm thực tế, vì vậy xin đừng nói với tôi rằng bỏ qua cảnh báo là xấu. Tôi biết điều đó, nhưng tôi cũng biết rằng thời gian đó không phải là một nguồn tài nguyên vô hạn.

4

Vâng, bạn có thể quên rằng bạn đã đặt cờ và tự hỏi tại sao ứng dụng của bạn bị hỏng trong bản cập nhật PHP tiếp theo. Nó có thể rất bực bội để gỡ lỗi một ứng dụng mà không có báo cáo lỗi thích hợp. Đó là một lý do tôi có thể nghĩ đến.

Tuy nhiên, nếu bạn làm điều đó, hãy ghi tài liệu ở đâu đó. Nó có thể giúp bạn tiết kiệm một vài giờ trước khi bạn nhớ thiết lập cờ cả.

+3

Khi các tính năng không được chấp nhận này bị xóa khỏi PHP, mã sử dụng chúng sẽ bắt đầu tạo lỗi E_WARNING hoặc gây tử vong, vì vậy sẽ rất khó để bỏ lỡ;) – Mchl

+0

Tốt, tôi không biết điều đó :). Thx để chia sẻ. – TheGrandWazoo

1

Tôi cho rằng bạn có một số loại máy chủ thử nghiệm? Nếu không, bạn thực sự nên thiết lập một và kiểm tra mã của bạn trong PHP 5.3. Nếu mã của bạn được triệt để Đơn vị thử nghiệm, thử nghiệm nó sẽ mất vài giây, và sửa chữa nó sẽ được khá nhanh quá, như các xét nghiệm đơn vị sẽ cho bạn biết chính xác nơi để tìm. Nếu không, hãy xem xét đơn vị kiểm tra tất cả ưu tiên trước bản phát hành tiếp theo và trong thời gian chờ đợi, trước tiên hãy tắt E_DEPRECATED cảnh báo và sửa bất kỳ điều gì xảy ra, sau đó bật lại khi bạn có thời gian. Bạn cũng có thể chạy tìm và thay thế toàn cục để dễ sửa lỗi hơn.

Các vấn đề liên quan