Bagaimana cara mencatat kesalahan php di file terpisah?

6

Saya baru saja melakukan upgrade server saya ke Fedora 17 dan menggabungkan beberapa file konfigurasi yang .rpmnewmenjadi yang ada. Saya telah berhasil mencatat kesalahan php saya di file log yang terpisah dengan menjaga yang berikut ini di php.ini:

log_errors = On
error_log = /var/log/php-errors.log

Saya tidak yakin mengapa kesalahan dicatat /var/log/httpd/error_logsetelah pembaruan meskipun mempertahankan pengaturan di atas.

Juga,

$ ls -l /var/log/php-errors.log
-rwxrwxr--. 1 apache myself 232 Dec 13 16:49 /var/log/php-errors.log

menunjukkan bahwa apache memiliki file log kesalahan php.

Apa yang bisa menyebabkan kesalahan PHP untuk login ke file log kesalahan apache?

Pertanyaan Melimpah
sumber
@DaveRandom, dari phpinfo(), itu menunjukkan file config yang dimuat menjadi /etc/php.ini, yang benar.
Pertanyaan Overflow
Sudahkah Anda mencoba mengatur izin /var/log/php-errors.logke 666, jika pengguna / grup tidak mengatur bagaimana Anda berpikir mereka?
DaveRandom
@DaveRandom, terima kasih atas sarannya. Saya mencoba, dan masih mengirim kesalahan ke log kesalahan apache. Bahkan menonaktifkan SELinux tidak sedikit membantu :(
Pertanyaan Overflow

Jawaban:

0

Saya pikir di sini hanya kesalahan umum Apache yang terlihat di /var/log/httpd/error_log.

Saya akan memasukkan panggilan ke error_log('test');dalam beberapa logika PHP yang diketahui ditafsirkan ketika beberapa halaman tertentu di-refresh, dan jika itu tidak terlihat /var/log/php-errors.logmaka saya menduga bahwa versi yang ditingkatkan memiliki semacam konfigurasi atau skema izin yang berbeda. membuat konfigurasi lama berhenti bekerja.

Saya akan merekomendasikan melalui bagian 'Penanganan kesalahan dan masuk' /etc/php/php.ini, dan memeriksa nilai yang tepat untuk arahan lain. Arahan error_reportingharus diatur ke E_ALLatau E_ALL & ~E_DEPRECATED & ~E_STRICT. Arahan log_errorsseharusnya On.

Jika hanya nama file (tetapi tidak ada jalur) yang ditentukan error_log, maka file tersebut akan muncul di direktori yang sama dengan skrip PHP yang memanggil error_log(...).

Saya juga merekomendasikan /tmp/php_error_loguntuk menentukan error_log, menyegarkan halaman, dan kemudian ls /tmpuntuk melihat apakah file itu ada.

Jika file tidak ada, login sebagai root, dan lakukan pencarian untuk nama file di seluruh sistem file jadi lihat di mana itu berakhir.

Secara umum, konfigurasi yang tepat untuk membuat log kesalahan PHP bekerja di direktori tertentu berubah di berbagai versi Apache, PHP, dan berbagai distro.

Saya dapat mengatakan bahwa pada Arch Linux dengan Apache 2.4, PHP 5.5.11 dan systemd versi 212-1 konfigurasi di atas akan membuat log kesalahan PHP berakhir di suatu tempat yang mirip dengan /tmp/systemd-private-65d4c3e3cc534155bcf3ec708c2362f6-httpd.service-h8MSsD/tmp/php_error_log.

maratbn
sumber
Tidak, itu adalah kesalahan PHP, bukan kesalahan umum. Dan saya memang memberikannya jalur penuh bukannya jalur relatif. Dan dulu berfungsi dua tahun lalu.
Pertanyaan Overflow