2012-10-11 32 views
17

Tôi có thể tìm thấy tệp nhật ký lỗi ở đâu? Tôi cần kiểm tra chúng để giải quyết lỗi máy chủ nội bộ được hiển thị sau khi cài đặt suPHP.Tôi có thể tìm thấy tệp nhật ký lỗi ở đâu?

+1

Tùy thuộc vào cài đặt ghi nhật ký của bạn :) CO – Nemoden

+1

máy chủ của tôi là centos nhưng không hiển thị bất kỳ điều gì dưới var/log/httpd – user1010966

+0

Kiểm tra xem ['error_log'] (http://www.php.net/manual/en) /errorfunc.configuration.php#ini.error-log) đường dẫn được đặt trong php.ini. Nếu không được thiết lập, nó thường sẽ được ghi vào nhật ký lỗi của máy chủ web. – air4x

Trả lời

2

Hệ điều hành nào bạn đang sử dụng và máy chủ web nào? Trên Linux và Apache, bạn có thể tìm thấy error_log apache trong/var/log/apache2/

+2

Đặt câu hỏi theo ý kiến ​​ –

+0

trong/var/log không có bất kỳ thư mục hoặc tập tin có tên apache2 hoặc apache. Máy chủ của tôi là centos - apache – user1010966

+0

trong/var/log/httpd? Bạn có thể cấu hình vị trí đăng nhập của apache trong tệp apache.conf. điều này nên được đặt ở đâu đó tại/etc/httpd/ – hiasl86

9

Làm việc cho tôi. Làm thế nào đăng nhập tất cả các lỗi php để đăng nhập fiie?

Chỉ cần thêm sau dòng để /etc/php.ini để đăng nhập lỗi vào tập tin định - /var/log/php-scripts.log

vi /etc/php.ini 

Sửa error_log chỉ

error_log = /var/log/php-scripts.log 

Make chắc chắn display_errors được đặt thành Tắt (không có lỗi cho người dùng cuối)

display_errors = Off 

Lưu và đóng tệp. Khởi động lại máy chủ web:

/etc/init.d/httpd restart 

Làm cách nào để đăng nhập lỗi vào nhật ký sự kiện hoặc Nhật ký sự kiện Windows Server?

Sửa error_log như sau:

error_log = syslog 

Làm thế nào nhìn thấy các bản ghi?

Login using ssh or download a log file /var/log/php-scripts.log using sftp: 
$ sudo tail -f /var/log/php-scripts.log 
+0

Tại sao tôi nên đảm bảo display_errors bị tắt? Chắc chắn điều này không ảnh hưởng đến việc ghi lỗi, phải không? – User

+0

Như đã nêu trong câu trả lời, 'display_errors' xác định xem lỗi có được hiển thị * cho người dùng cuối * không (ví dụ: trên trang web được hiển thị), vì vậy không, nó không ảnh hưởng đến việc ghi nhật ký. http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors – cincodenada

1

Tôi đang sử dụng hệ điều hành Cent 6.6 với Apache và cho tôi lỗi file log trong

/usr/local/apache/log

15

Bạn có thể sử dụng "lsof" để tìm logfiles mở trên hệ thống của bạn. lsof chỉ cung cấp cho bạn danh sách tất cả các tệp đang mở.

Sử dụng grep cho "nhật ký" ... sử dụng grep lần nữa cho "php" (nếu tên tệp chứa chuỗi "nhật ký" và "php" như trong "php_error_log" và bạn là người dùng root bạn sẽ tìm thấy tệp mà không biết cấu hình).

 [email protected]:~# lsof |grep log 
     ... snip 
     gmain  12148 12274  user 13r  REG    252,1 32768  661814 /home/user/.local/share/gvfs-metadata/home-11ab0393.log 
     gmain  12148 12274  user 21r  REG    252,1 32768  662622 /home/user/.local/share/gvfs-metadata/root-56222fe2.log 
     gvfs-udis 12246    user mem  REG    252,1 55384  790567 /lib/x86_64-linux-gnu/libsystemd-login.so.0.7.1 
==> apache 12333    user mem  REG    252,1 55384  790367 /var/log/http/php_error_log** 
     ... snip 

 [email protected]:~# lsof |grep log |grep php 
     **apache 12333    user mem  REG    252,1 55384  790367 /var/log/http/php_error_log** 
     ... snip 

Cũng xem bài viết này trên tìm logfiles mở: Find open logfiles on a linux system

+0

đây là một cách tuyệt vời để tìm tệp nhật ký – Alp

4

trên CentOS với cPanel cài đặt các bản ghi của tôi đã in:

/usr/local/apache/logs/error_log

Để xem: tail -f /usr/local/apache/logs/error_log

0

Đây là một câu trả lời thích hợp trong hầu hết các trường hợp sử dụng, bởi vì nó cho phép bạn tách thực hiện các phần mềm từ kiến ​​thức trực tiếp của nền tảng máy chủ, mà giữ mã của bạn xách tay nhiều hơn nữa.Nếu bạn đang làm rất nhiều cron/cgi, điều này có thể không giúp trực tiếp, nhưng nó có thể được đặt thành cấu hình tại thời gian chạy web mà các tập lệnh cron/cgi kéo từ để giữ vị trí nhật ký nhất quán trong trường hợp đó.


Bạn có thể nhận được các tập tin log hiện giao natively để php trên bất kỳ nền tảng trong thời gian chạy bằng cách sử dụng:

ini_get('error_log'); 

này trả về giá trị phân phối trực tiếp đến nhị phân php bởi các máy chủ web, đó là những gì bạn muốn trong 90% trường hợp sử dụng (với ngoại lệ rõ ràng là cgi). Cgi thường sẽ đăng nhập vào cùng một vị trí này với tư cách máy khách http webserver, nhưng không phải lúc nào cũng vậy.

Bạn cũng sẽ muốn kiểm tra xem nó có thể ghi trước khi cam kết bất cứ điều gì với nó để tránh lỗi. Tệp conf định nghĩa vị trí của nó (thường là apache.conf trên toàn cầu hoặc vhosts.conf trên cơ sở từng tên miền), nhưng ký tự conf không đảm bảo rằng quyền truy cập tệp cho phép ghi vào thời gian chạy.

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