Hướng dẫn php error_log not working - php error_log không hoạt động

Phương thức PHP ERROR_LOG không ghi lỗi vào tệp nhật ký lỗi tùy chỉnh. Nó sẽ chỉ viết vào /var/log/apache2/php_error.log

Dưới đây là các cài đặt ghi nhật ký trong php.ini của tôi:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off
log_errors = On
log_errors_max_len = 0 ; also tried with 9999999
error_log = /var/log/apache2/php_errors.log

PHP ghi các lỗi của nó vào nhật ký lỗi Apache thông thường (

# chmod a+w /var/log/httpd
0) thay vì lỗi tôi đã chỉ định ở trên.

Những điều tôi đã thử:

  1. Tôi đã dừng và khởi động lại Apache sau khi thay đổi tệp php.ini
  2. Tệp
    # chmod a+w /var/log/httpd
    
    1 là 777 quyền và tệp tồn tại.
  3. Không có tệp php.ini ghi đè khác. (Có /etc/php5/cli/php.ini nhưng tôi không sử dụng CLI).
  4. Không có cài đặt error_log = xxx nào khác xuống tệp php.ini có thể ghi đè lên tệp đầu tiên
  5. phpinfo () cho biết error_log = /var/log/apache2/php_errors.log (tức là tệp chính xác), cả dưới giá trị cục bộ và giá trị chính
  6. Tập lệnh kiểm tra tôi đang sử dụng để tạo lỗi không chứa bất kỳ cuộc gọi ini_set nào

.

Tôi đang làm gì sai?

Hướng dẫn php error_log not working - php error_log không hoạt động

Hỏi ngày 21 tháng 9 năm 2011 lúc 13:26Sep 21, 2011 at 13:26

9

Tôi muốn trả lời điều này vì đó là kết quả cao trên Google mặc dù đó là một câu hỏi cũ.

Tôi đã giải quyết điều này bằng cách thêm quyền ghi cho tất cả người dùng trên thư mục nhật ký.

Trong trường hợp của tôi, người dùng 'http' cần phải ghi vào/var/log/httpd/vì vậy tôi đã chạy

# chmod a+w /var/log/httpd

Nếu tệp đã tồn tại, nó có thể giúp xóa nó trước và cho phép Apache tạo nó.

Tệp php.ini của tôi bao gồm toàn bộ đường dẫn, cũng vậy.

error_log = /var/log/httpd/php_errors.log

Đã trả lời ngày 13 tháng 6 năm 2014 lúc 17:07Jun 13, 2014 at 17:07

Newmangtnewmangtnewmangt

2.2091 Huy hiệu vàng13 Huy hiệu bạc9 Huy hiệu đồng1 gold badge13 silver badges9 bronze badges

1

Bạn có thể thử chỉ định tên tệp như thế này:

Tôi đang sử dụng Apache 2.2.22 trên Ubuntu.

Sử dụng lệnh PHP này:

error_log("eric", 3, "/home/el/error.log");

Tham số đầu tiên là thông báo được gửi đến nhật ký lỗi. Tham số thứ 2

# chmod a+w /var/log/httpd
2 có nghĩa là "mong đợi một điểm đến tên tệp. Tham số thứ ba là đích.

Tạo tệp /home/el/error.log và đặt quyền sở hữu của nó cho điều này:

[email protected]:~$ ll error.log
-rwxrwxr-x 1 www-data www-data 7 Dec 13 14:30 error.log

Khi PHP diễn giải phương thức ERROR_LOG, nó sẽ nối thêm thông báo vào tệp của bạn.

Nguồn: http://www.php.net/manual/en/function.error-rog.php

Đã trả lời ngày 13 tháng 12 năm 2013 lúc 19:40Dec 13, 2013 at 19:40

Eric Leschinskieric LeschinskiEric Leschinski

139K90 Huy hiệu vàng405 Huy hiệu bạc327 Huy hiệu đồng90 gold badges405 silver badges327 bronze badges

Đảm bảo rằng người dùng Apache ít nhất có quyền thực thi trên bất kỳ thư mục mẹ nào trong đường dẫn đến logfile. Không có nó, Apache không thể liệt kê bất cứ điều gì trong thư mục và do đó không thấy logfile.

ls
drwxr-x--- root adm folder

chmod o+x folder

ls
drwxr-x--x root adm folder

Đó là một gotcha thực sự! ;-)

Sau đó, cũng kiểm tra xem người dùng Apache có đọc và ghi quyền cho logfile thực tế không.

Đã trả lời ngày 2 tháng 11 năm 2020 lúc 10:10Nov 2, 2020 at 10:10

JettejetteJette

2.27927 Huy hiệu bạc34 Huy hiệu đồng27 silver badges34 bronze badges

3

Tôi đã gặp sự cố và sau đó tôi đã cho phép đúng thư mục nhật ký Apache và sau đó khởi động lại Apache của tôi bằng các lệnh này:

sudo chmod a+w /var/log/apache2/
sudo service apache2 restart

Đã trả lời ngày 28 tháng 4 năm 2021 lúc 19:15Apr 28, 2021 at 19:15

Pejman Kheyripejman KheyriPejman Kheyri

2.9867 Huy hiệu vàng30 Huy hiệu bạc31 Huy hiệu Đồng7 gold badges30 silver badges31 bronze badges

Bạn có thể đặt tệp nhật ký lỗi cho một trang web trong tệp cấu hình trang web ảo, ví dụ:

# chmod a+w /var/log/httpd
3:



  ....

  ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined


Trong hệ thống UNIX

# chmod a+w /var/log/httpd
4 thường là
# chmod a+w /var/log/httpd
5 Các lỗi và quyền truy cập sẽ được lưu trong
# chmod a+w /var/log/httpd
6 và
# chmod a+w /var/log/httpd
7.

Đã trả lời ngày 8 tháng 4 năm 2014 lúc 14:08Apr 8, 2014 at 14:08

Amadu Bahamadu BahAmadu Bah

2.79926 Huy hiệu bạc27 Huy hiệu đồng26 silver badges27 bronze badges

Xóa php_errors.log và khởi động lại Apache2, chính máy chủ sẽ tạo tệp php_errors.log mới với sự cho phép và chủ sở hữu thích hợp.

rm -f /var/log/apache2/php_errors.log
service apache2 restart

ll /var/log/apache2/php_errors.log

Đã trả lời ngày 6 tháng 6 năm 2013 lúc 2:21Jun 6, 2013 at 2:21

蒋艾伦蒋艾伦蒋艾伦

4741 Huy hiệu vàng4 Huy hiệu bạc15 Huy hiệu đồng1 gold badge4 silver badges15 bronze badges

Hôm nay tôi đã dành vài giờ để cố gắng tìm ra lý do tại sao điều này không hoạt động và cố gắng gỡ lỗi mã làm việc xung quanh thực tế là tôi có thể đăng nhập bất cứ điều gì vào nhật ký lỗi PHP. Không cần phải nói, tôi đã đi với tốc độ của ốc sên cho đến khi tôi đăng nhập hoạt động.

Tôi đoán rằng hơn 90% thời gian là vấn đề cho phép. Trong trường hợp của tôi, daemon là chủ sở hữu và nhóm cho tệp nhật ký và tôi phải

# chmod a+w /var/log/httpd
8 để root và sau đó thay đổi quyền của tệp nhật ký. Tôi đã đổi thành:

# chmod a+w /var/log/httpd
9

Cảm ơn Chúa vì stackoverflow.com

Đã trả lời ngày 6 tháng 4 năm 2016 lúc 19:35Apr 6, 2016 at 19:35

2

Error_log viết thư cho ở đâu?

Vị trí của tệp nhật ký lỗi có thể được đặt thủ công trong PHP. Tệp INI. Trên máy chủ Windows, trong IIS, nó có thể là một cái gì đó giống như "'error_log = c: \ log_files \ php_errors.log'" Trong Linux, nó có thể là giá trị của "'/var/log/php_errors.C:\log_files\php_errors. log'" in Linux it may be a value of "'/var/log/php_errors.

Làm cách nào để đăng nhập lỗi vào tệp văn bản trong PHP?

Có thể thêm lệnh ini_set (log log_errors, đúng) vào tập lệnh PHP để cho phép đăng nhập lỗi trong PHP. Có thể thêm lệnh ini_set ('error_log', $ log_file) vào tập lệnh PHP để đặt tệp ghi nhật ký lỗi. Có thể sử dụng chức năng ERROR_LOG ($ ERROR_MESSAGE) để đăng nhập thông báo lỗi vào tệp đã cho.. The ini_set('error_log', $log_file) command can be added to the php script to set the error logging file. Further error_log($error_message) function call can be used to log error message to the given file.

Làm cách nào để kích hoạt ghi nhật ký PHP?

Bật đăng nhập lỗi trong PHP. Nếu bạn muốn bật lỗi PHP đăng nhập vào các tệp riêng lẻ, hãy thêm mã này ở đầu tệp PHP. ini_set ('display_errors', 1); ini_set ('display_startup_errors', 1); error_Reporting (e_all); Bây giờ, bạn phải chỉ bật một câu lệnh để phân tích lỗi nhật ký trong PHP.ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); Now, you must enable only one statement to parse the log errors in the php.

Tôi có thể xóa nhật ký lỗi PHP của mình không?

Hoàn toàn an toàn khi chỉ xóa tệp php.log.Nó sẽ được tự động tạo vào lần tới khi cần thiết. log file. It will be auto-created the next time it is needed.