Rachel Andrew là nhà phát triển web, nhà văn và diễn giả. Cô ấy là tác giả của một số cuốn sách, bao gồm Bố cục CSS mới. Cô ấy là một trong những người đứng sau … Thông tin thêm về Rachel ↬
Bản tin email
Email [đập vỡ] của bạn
Mẹo hàng tuần về giao diện người dùng & UX.
Được hơn 200.000 người tin cậy.
- Giao diện người dùng SmashingConf 2023
- Hệ thống thiết kế thành công
- Lớp học tổng thể về nguyên tắc phổ quát của kiểu chữ với Elliot Jay Stocks
- Bắt đầu miễn phí
- Danh sách kiểm tra thiết kế giao diện thông minh
Tôi đã là nhà phát triển PHP được 10 năm và công ty của tôi đã phát triển một hệ thống quản lý nội dung, được viết bằng PHP, rất đơn giản để cài đặt và bắt đầu sử dụng. Vì vậy, tôi dành nhiều thời gian làm việc với các nhà thiết kế lần đầu tiên cài đặt tập lệnh PHP. Nếu bạn đang cài đặt một tập lệnh và xảy ra sự cố, PHP có thể vô cùng tức giận. Cho đến khi bạn biết ý nghĩa của chúng, các lỗi PHP có thể gây trở ngại. tin nhắn yêu thích của tôi là
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
Paamayim Nekudotayim có nghĩa là “dấu hai chấm” trong tiếng Do Thái. Nhưng
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
1 dễ gỡ lỗi hơn rất nhiều so với php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
2Bài viết này dành cho các nhà thiết kế không phải là nhà phát triển PHP nhưng thỉnh thoảng cần cài đặt các tập lệnh PHP. Do đó, các sự cố và thông báo lỗi mà chúng tôi sẽ xem xét ở đây là những vấn đề bạn có thể gặp phải nhất khi cài đặt tập lệnh, thay vì khi viết PHP. Các mẹo này sẽ giúp bạn xử lý các thông báo lỗi khác và ít nhất sẽ giúp bạn cung cấp thông tin rõ ràng cho nhà phát triển tập lệnh nếu bạn cần yêu cầu họ hỗ trợ
Thêm sau khi nhảy. Tiếp tục đọc bên dưới ↓
Gặp gỡ Hội thảo trực tuyến Smashing về giao diện người dùng & giao diện người dùng, với các bài học thực tế, phiên trực tiếp, bản ghi video và phần Hỏi & Đáp thân thiện. Trên các hệ thống thiết kế, UX, hiệu suất web và CSS/JS. Với Brad Frost, Stephanie Troeth và rất nhiều người khác
Chuyển đến hội thảo ↬Đọc thêm trên SmashingMag.
- PHP. Những điều bạn cần biết để chơi với web
- 10 thủ thuật PHP nâng cao
- 50 công cụ PHP cực kỳ hữu ích
Tất cả những gì tôi nhận được là một trang trống
Trước khi chẩn đoán lỗi PHP, chúng ta cần xem một số lỗi PHP. Lý tưởng nhất là trước tiên bạn nên cài đặt tập lệnh cục bộ, có thể sử dụng MAMP trên máy Mac hoặc XAMPP, cả hai đều cho phép bạn bật thông báo lỗi một cách dễ dàng. Bạn có thể lấy PHP để chỉ ra các lỗi trực tiếp trên màn hình hoặc ghi chúng vào một tệp để xem
Tuy nhiên, nếu bạn đang cài đặt tập lệnh trực tiếp vào tài khoản dịch vụ lưu trữ của mình, máy chủ lưu trữ có thể đã vô hiệu hóa việc hiển thị tất cả các thông báo lỗi PHP. Điều này hợp lý để bảo mật, vì thông báo lỗi có thể làm lộ thông tin quan trọng về máy chủ hoặc cơ sở dữ liệu, nhưng nó không hữu ích lắm nếu bạn đang cố định cấu hình tập lệnh. Nếu các hiển thị lỗi đã bị tắt, thì một lỗi nghiêm trọng trước khi bất kỳ đầu ra nào được thực hiện trên trang sẽ dẫn đến một trang trống. Một lỗi xảy ra sau khi một số HTML đã được xuất ra sẽ dẫn đến việc đánh dấu bị "cắt" [dừng tại điểm xảy ra lỗi]. Nếu bạn “Xem nguồn” và thấy một trang hoàn toàn trống hoặc nửa trang hoặc đang gặp “lỗi máy chủ nội bộ 500”, thì lỗi PHP có thể là thủ phạm
Xác định vị trí Nhật ký lỗi
Trên máy chủ trực tiếp, bạn sẽ có quyền truy cập nhật ký lỗi PHP. Điều này khác với nhật ký lỗi máy chủ Web, hiển thị những thứ như lỗi 404 khi không tìm thấy trang hoặc hình ảnh. Nhật ký PHP cung cấp thông tin về các lỗi và cảnh báo trong chính PHP. Máy chủ nên cấu hình PHP để gửi lỗi vào nhật ký thay vì ghi chúng lên màn hình
Nếu không tìm thấy nhật ký lỗi, thì bạn có thể định cấu hình PHP để duy trì một bản ghi ở vị trí mà bạn chỉ định. Để làm điều này, hãy tạo một thư mục trên trang web của bạn có tên là
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
3. Làm cho thư mục này có thể ghi được. Sau đó thêm mã dưới đây vào. htaccess ở thư mục gốc của trang web của bạn. Nếu bạn không có. htaccess, hãy tạo một tệpphp_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
Sau đó, bảo vệ thư mục
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
3 để tệp không thể tải xuống từ Web. Bạn có thể thực hiện việc này trong bảng điều khiển hoặc chỉ bằng cách tạo một trang mới. htaccess, lần này nằm trong thư mục php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
3Order allow,deny
Deny from all
Nếu bây giờ bạn chạy tập lệnh gây ra lỗi, thông báo lỗi sẽ được thêm vào php_error. tệp nhật ký. Nếu nó không hoạt động, trước tiên hãy thử tự tạo tệp trong thư mục
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
3 và làm cho nó có thể ghi đượcNếu bạn không gặp may mắn khi tạo nhật ký lỗi, hãy mở một phiếu hỗ trợ với nhà cung cấp dịch vụ lưu trữ của bạn, giải thích những gì bạn đang cố gắng đạt được và hỏi cách thực hiện
Lỗi, Thông báo và Cảnh báo
PHP phân loại các thông báo đi đến nhật ký lỗi là lỗi, thông báo hoặc cảnh báo. Chúng có mức độ nghiêm trọng khác nhau. Một lỗi là một cái gì đó bị hỏng trong mã của bạn. Nó cần sửa và sẽ khiến PHP ngừng thực thi
Một cảnh báo về cơ bản là PHP nói rằng, “Những gì bạn đang làm có thể sẽ gây ra sự cố, nhưng tôi sẽ cố gắng tiếp tục. ”
Thông báo cho bạn biết điều gì đó cần chú ý trong tập lệnh của bạn. Có thể phiên bản PHP trên máy chủ của bạn mới hơn phiên bản được tập lệnh hỗ trợ. Mọi thứ trong PHP không được dùng nữa giống như cách các phần tử trong đặc tả HTML không được dùng nữa. Khi một cái gì đó không được dùng nữa, điều đó có nghĩa là nó sẽ bị xóa trong tương lai, vì vậy thông báo cho bạn biết điều này
Lỗi trong tập lệnh đã mua hoặc mã nguồn mở rất có thể là sự cố với cài đặt của bạn, giả sử rằng phiên bản PHP của bạn đáp ứng yêu cầu. Nếu một tập lệnh đưa ra các cảnh báo mà bạn không thể khắc phục, thì có lẽ bạn nên nêu chúng với bộ phận hỗ trợ kỹ thuật. Bạn thường có thể bỏ qua các thông báo, mặc dù bạn nên kiểm tra xem phiên bản mới nhất của tập lệnh đã được cài đặt chưa. Nếu nhiều thông báo bị loại bỏ, điều đó có thể cho thấy một tập lệnh kém chất lượng
Nếu thủ thuật bật ghi nhật ký lỗi ở trên hiệu quả với bạn, thì bạn có thể đặt mức báo cáo lỗi trong. htaccess cũng vậy
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
Ở trên sẽ chỉ thêm lỗi vào
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
7php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
1Đặt
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
8 thành php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
9 sẽ ghi lại tất cả các lỗi, cảnh báo và thông báo. Nếu bạn làm điều này, thì chắc chắn bạn sẽ muốn đặt Order allow,deny
Deny from all
0 thành Order allow,deny
Deny from all
1, để các thông báo không được xuất ra các trang trên trang web của bạnLỗi đầu tiên là lỗi quan trọng
Nếu bạn đang hiển thị lỗi trên trang và gặp lỗi PHP, bạn có thể gặp phải một trang đầy lỗi đáng sợ. Nếu bạn đang xem lại lỗi trong nhật ký, hãy làm mới trang đang tạo ra lỗi rồi kiểm tra nhật ký. Bạn có thể tìm thấy một loạt lỗi cho cùng một trang; . Điều này thường xảy ra khi lỗi đầu tiên là cảnh báo; . Khắc phục cảnh báo ban đầu và bạn có thể thấy rằng tất cả các sự cố khác sẽ biến mất
Lỗi liên quan đến cơ sở dữ liệu
Nhiều lỗi mọi người gặp phải khi cài đặt tập lệnh liên quan đến kết nối với cơ sở dữ liệu. Thông thường, khi tập lệnh cần tạo kết nối cơ sở dữ liệu, bạn sẽ được yêu cầu cung cấp bốn bit thông tin. tên người dùng và mật khẩu của cơ sở dữ liệu, địa chỉ của máy chủ [thường là, nhưng không phải luôn luôn,
Order allow,deny
Deny from all
2] và tên của cơ sở dữ liệu. Nếu bất kỳ điều nào trong số này không chính xác, bạn sẽ không thể kết nối. Tùy thuộc vào tập lệnh, bạn sẽ thấy một chuỗi thông báo lỗi xấu hoặc nếu nhà phát triển đã xử lý việc này một cách khéo léo, bạn sẽ được thông báo rằng tập lệnh không thể kết nối với cơ sở dữ liệuCác sự cố kết nối cơ sở dữ liệu mà tôi thường thấy khi cung cấp hỗ trợ kỹ thuật như sau
- Người dùng đã nhập
2 thay vì địa chỉ IP hoặc URL cho máy chủ cơ sở dữ liệu. Localhost có nghĩa là cơ sở dữ liệu nằm trên cùng một máy chủ với trang web của bạn. Một số máy chủ có các máy chủ khác nhau cho MySQL và do đó sẽ cung cấp cho bạn địa chỉ của máy chủ mà bạn cần sử dụng khi định cấu hình tập lệnhOrder allow,deny Deny from all
- Tên người dùng không chính xác đã được nhập. Một điều cần lưu ý là cPanel đặt tiền tố tên người dùng mà bạn tạo bằng tên tài khoản. Nếu tên tài khoản của bạn là
4 và bạn tạo một người dùng có tên làOrder allow,deny Deny from all
5, thì tên người dùng để nhập khi định cấu hình tập lệnh sẽ làOrder allow,deny Deny from all
6Order allow,deny Deny from all
- Tên cơ sở dữ liệu không chính xác đã được nhập. Cũng như tên người dùng, cPanel đặt tiền tố tên cơ sở dữ liệu bằng tên tài khoản. Kiểm tra xem bạn có đang sử dụng phiên bản có tiền tố trong cấu hình của mình không
Sự cố về quyền cơ sở dữ liệu
Một nguyên nhân khác có thể gây ra sự cố liên quan đến cơ sở dữ liệu là khi tất cả các chi tiết kết nối đều chính xác, nhưng người dùng cơ sở dữ liệu không có quyền cần thiết để thực hiện những việc mà tập lệnh cần thực hiện. Ví dụ: tập lệnh có thể cần tạo bảng cơ sở dữ liệu và do đó sẽ yêu cầu người dùng cơ sở dữ liệu phải có quyền
Order allow,deny
Deny from all
7Nếu bạn đã tạo người dùng cơ sở dữ liệu trong cPanel, bạn cũng cần chọn cơ sở dữ liệu và kết nối người dùng với nó, cấp cho người dùng đủ quyền để chạy tập lệnh. Ví dụ: nếu bạn đang cài đặt WordPress, người dùng cơ sở dữ liệu của bạn sẽ cần có
Order allow,deny
Deny from all
8 cho cơ sở dữ liệu mà nó được đính kèmTrong cPanel, bạn có thể thiết lập những thứ này trong phần có tên “Thêm người dùng vào cơ sở dữ liệu. ” Chọn người dùng và cơ sở dữ liệu, sau đó trên màn hình tiếp theo, nhấp vào hộp kiểm “Tất cả Đặc quyền” trước khi gửi biểu mẫu
Lỗi PHP
Nhóm lỗi tiếp theo là lỗi do PHP tạo ra do một số vấn đề với tập lệnh mà bạn đang cài đặt hoặc do thứ gì đó đã được đưa vào trong khi bạn đang cài đặt hoặc định cấu hình tập lệnh đó
Lỗi nghiêm trọng. Cuộc gọi không mục đích
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
3Điều này có nghĩa là không thể tìm thấy chức năng PHP mà trang hiện tại cần. Hàm này có thể là một phần của chính tập lệnh hoặc được tích hợp ngay trong PHP. Bạn có thể thấy lỗi này khi cài đặt tập lệnh của bên thứ ba vì những lý do sau
- Nếu bạn đang cài đặt một tập lệnh mới, có thể bạn chưa tải tất cả các tệp lên. Theo kinh nghiệm của tôi, những người sử dụng ứng dụng khách FTP của Dreamweaver gặp phải sự cố này rất nhiều
- Nếu bạn đang nâng cấp, bạn có thể chưa thay thế tất cả các tệp được yêu cầu. Vì vậy, một phiên bản cũ không chứa chức năng đang được sử dụng
- Bạn có thể chưa thêm một PHP bắt buộc bao gồm hoặc chỉ định một đường dẫn chính xác trong tệp cấu hình
- Một tập lệnh có thể đang gọi một hàm PHP không khả dụng trên máy chủ này. Ví dụ: nó có thể đang gọi
9 khi thư viện hình ảnh GD chưa được cài đặtOrder allow,deny Deny from all
Để giải quyết lỗi, hãy kiểm tra cẩn thận xem tất cả các tệp đã được tải lên hoặc thay thế chưa và bạn đã làm theo hướng dẫn cài đặt chưa. Nếu bạn không thể giải quyết nó, hãy liên hệ với nhà phát triển tập lệnh, giải thích những gì bạn đã làm và những gì bạn đã kiểm tra và sao chép thông báo lỗi
Nếu vấn đề là thiếu thứ gì đó trong bản cài đặt PHP của bạn, thì bạn có thể cần liên hệ với nhà cung cấp dịch vụ lưu trữ của mình
Lỗi nghiêm trọng. Không thể tuyên bố lại
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
5Điều này thường có nghĩa là bạn đã bao gồm một tệp hai lần. Kiểm tra mọi nơi bạn đã chỉnh sửa và kiểm tra các tệp được bao gồm để đảm bảo bạn không sao chép tệp bao gồm
Lỗi nghiêm trọng. Dung lượng bộ nhớ cho phép đã hết
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
6Thông thường, bạn sẽ thấy lỗi này khi cố gắng tải lên và xử lý một hình ảnh, mặc dù bạn có thể gặp lỗi này đối với bất kỳ tập lệnh nào cần nhiều bộ nhớ để chạy. Dung lượng bộ nhớ mà tập lệnh của bạn được phép sử dụng do nhà cung cấp dịch vụ lưu trữ đặt. Trên các gói lưu trữ chia sẻ giá rẻ, các giới hạn này thường được đặt rất thấp. Nếu bạn cần sử dụng tập lệnh để xử lý hình ảnh lớn, hãy liên hệ với nhà cung cấp của bạn để xem liệu bạn có thể chuyển sang gói có giới hạn cao hơn hay không
Lỗi quyền
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
7Cảnh báo này là một ví dụ về lỗi quyền. Tập lệnh đang cố tải một tệp lên một thư mục, nhưng thư mục đó không có đủ quyền để chuyển tệp vào đó. Các quyền mà PHP cần để ghi vào tệp hoặc thư mục tùy thuộc vào cách cấu hình máy chủ và việc bạn đang sử dụng máy chủ Unix hay Windows. Phần trên “” trong WordPress Codex có liên quan ngay cả khi bạn không sử dụng WordPress. Tuy nhiên, nếu bạn nhận được bất kỳ loại lỗi hoặc cảnh báo "Quyền bị từ chối" nào và không thể khắc phục nó chỉ bằng cách thay đổi quyền cho thư mục, hãy nói chuyện với nhà cung cấp dịch vụ lưu trữ của bạn thay vì nhà phát triển tập lệnh, vì nhà cung cấp của bạn sẽ có thể
Cảnh báo PHP. Bao gồm
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
8Cảnh báo này cho bạn biết rằng không tìm thấy tệp bao gồm [được bao gồm bằng cách sử dụng cú pháp
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
0 của PHP]. Đó là một cảnh báo chứ không phải là một lỗi, bởi vì PHP sẽ tiếp tục cố gắng tải trang nếu nó không thể tìm thấy một bao gồmTrong PHP, bạn có thể bao gồm các tệp bằng cách sử dụng
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
1 hoặc php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
2. Nếu bạn sử dụng php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
2, thì bạn đang nói với PHP rằng tập lệnh này rất quan trọng để chạy trang web và vì vậy PHP sẽ báo lỗi nếu không tìm thấy tệp, thay vì cố gắng tiếp tụcNếu bạn nhận được cảnh báo hoặc thông báo lỗi rằng không thể mở tệp, thì hãy kiểm tra xem tệp được đề cập trong thông báo lỗi có ở đó không và đường dẫn của bạn đến tệp đó có chính xác không. Ví dụ: nếu bạn có tệp
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
4 và trang gọi tệp này nằm trong thư mục php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
5, thì bạn cần bao gồm php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
6 với nội dung bao gồm sauphp_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
0Bỏ qua
php_flag log_errors on
php_flag display_errors off
php_value error_log /your/path/public_html/errors/php_error.log
php_value error_reporting 1
7 sẽ dẫn đến cảnh báo vì PHP sẽ không thể tìm thấy tệpTóm tắt
Các lỗi PHP có vẻ rất khó hiểu nếu bạn không phải là nhà phát triển PHP, nhưng nếu bạn đọc kỹ thông báo lỗi, bạn thường sẽ tìm thấy điều gì đó dẫn bạn đến gốc rễ của vấn đề. Hầu hết các lỗi tôi thấy trong bộ phận hỗ trợ kỹ thuật đều liên quan đến kết nối cơ sở dữ liệu không chính xác, thiếu tệp hoặc quyền. Đây là tất cả những điều mà một người không có kiến thức về PHP có thể tự xác định và khắc phục, chỉ bằng cách học cách truy cập các thông báo lỗi và làm quen với những gì PHP đề cập trong đó. Việc có thể gỡ lỗi các loại sự cố này sẽ giúp bạn tránh được rất nhiều sự thất vọng và sẽ giúp bạn không phải chờ bộ phận hỗ trợ kỹ thuật liên hệ lại với mình
Nếu bạn gặp lỗi khi cài đặt tập lệnh, hãy nhớ những điều sau
- Tìm hiểu cách truy cập các lỗi PHP trên máy chủ của bạn
- Nhìn vào nhật ký lỗi để xem lỗi thực sự là gì
- Xem liệu bạn có thể xác định nguồn gốc của sự cố hay không bằng cách xem thông báo lỗi hoặc cảnh báo ban đầu cho tập lệnh
- Nếu lỗi có vẻ liên quan đến quyền hoặc cấu hình cơ sở dữ liệu không chính xác, hãy mở một yêu cầu với nhà cung cấp dịch vụ lưu trữ của bạn
- Nếu tập lệnh là vấn đề, hãy mở một yêu cầu với nhà phát triển, giải thích những gì bạn đã làm và sao chép thông tin từ nhật ký lỗi. Bạn sẽ mang lại niềm vui cho họ nếu bạn cung cấp thông báo lỗi thực tế thay vì nói rằng bạn đã thấy một trang trống
Đọc thêm
- “Xử lý lỗi PHP nâng cao qua. htaccess,” Jeff Starr, Báo chí hư hỏng
- “,” WordPress CodexThông tin dành riêng cho WordPress về cách định cấu hình nhật ký lỗi
- “3 cách để theo dõi lỗi PHP,” Jeff Starr, Digging Into WordPressBao gồm một số phương pháp ghi lỗi khác
Bạn có gặp một lỗi đặc biệt khó hiểu khi cài đặt tập lệnh không?