Де PHP зберігає журнал помилок? (php5, apache, fastcgi, cpanel)


392

Я перебуваю на спільному хостингу і в мене працюють Cpanel, Apache, PHP, які управляються fastcgi. Де PHP зберігає журнал помилок?

Чи є інший спосіб я знайти журнал помилок у спільному середовищі хостингу, замість того, щоб пройти всю структуру сайту, щоб шукати файли error_log?

У мене є доступ до php.ini(я використовую PHP версії 5.2.16).


25
В Linux /var/log/httpd/error_logабо /var/log/apache2/error.log. Ці файли належать root, тому для їх sudoперегляду або читання потрібно використовувати корінь або використовувати його.
Ерік Лещинський

112
php --info | grep error
sjas

8
Для тих, хто шукає рішення для Windows, скористайтеся, php --info | findstr /r /c:"error_log"щоб побачити, де знаходиться файл журналу.
Бум

1
Для мене це досить дивно ... Я розмістив журнали веб-сайтів і PHP, зберігаються в тому ж файлі, що і журнали Apache ... На моїй панелі адміністратора в журналах є можливість відобразити повний журнал помилок Apache, коли натискаю на нього, Є помилки щодо входу користувачів у місця, де вони не повинні, наприклад. Але, також, у тому ж файлі є помилки, які показано PHP.
RedClover

@soaku, якщо ви використовуєте fastcgi apache, сам не запускає PHP. коли ви використовуєте mod_php, який є модулем apache, apache обробляє php. Це означає, що помилки можуть і, ймовірно, будуть в журналах apache при використанні mod_php, але це не буде випадком, коли використовується cgi або fastcgi
Gall Annonim

Відповіді:


314

PHP зберігає журнали помилок, /var/log/apache2якщо PHP - модуль apache2. Спільні хости часто зберігають файли журналів у /logпідпапках кореневого каталогу . Але ... якщо у вас є доступ до php.iniфайлу, ви можете зробити це:

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

Відповідно до коментаря rinogo : Якщо ви використовуєте cPanel, файл головного журналу, який ви, ймовірно, шукаєте, зберігається (за замовчуванням) у

/usr/local/apache/logs/error_log

Якщо все інше не вдається, ви можете перевірити розташування файлу журналу, використовуючи

<?php phpinfo(); ?>

20
"Php зберігає журнали помилок у / var / log / apache2, якщо php є apache2", а не в RHEL тощо, де назва пакету - "httpd". Насправді не можна припустити, що ім'я пакету узгоджується з різними дистрибутивами.
chelmertz

28
FYI для Googlers - Якщо ви використовуєте cPanel, файл головного журналу, який ви, ймовірно, шукаєте, зберігається (за замовчуванням) за адресою/usr/local/apache/logs/error_log
rinogo

5
але перевірте розділ 'error_log' у, <?php phpinfo(); ?>щоб підтвердити шлях
sum1ejack

що робити, якщо це не модуль apache2 наприклад, це може бути fpm пакет debian, що працює на nginx.
n611x007

2
де в розділі phpinfo це покаже? у error_log все, що я бачу для ключа / значення, - це "error_log" і немає фактичного шляху
Роберт Сінклер

86

Спробуйте phpinfo()перевірити "error_log"


13
Він просто говорить error_log, шлях не вказаний. Я думаю, це може бути тому, що він знаходиться в середовищі загального хостингу, і якби ми мали доступ до нього, ми побачили б усі інші помилки на сайті.
ФЛЕЙВЕР

8
@PHPLOVER це говорить те саме, якщо ви спробуєте echo ini_get('error_log');?
chelmertz

Я не намагався цього зробити, але він сказав те саме у файлі php.ini, так що я це змінив шлях до файлу php.ini і перевірив, чи працює він, і це. Він все ще записує всі помилки, хоча я змінив шлях до помилок журналу (поза коренем документа)? дякую phplover
PHPLOVER

2
@PHPLOVER: ви могли легко контролювати рівень звітності за допомогою налаштування error_reporting(E_ALL|E_STRICT);se.php.net/manual/en/function.error-reporting.php
chelmertz

3
Моя говорить також, що error_log теж не знає, де його шукати. Це натискає на номер Google, але не відповідає на нього.
HMR

54

Linux

php --info | grep error 

Термінал видасть розташування журналу помилок.

Windows

php --info | findstr /r /c:"error_log"

Командний рядок виведе розташування журналу помилок

Щоб встановити розташування журналу

Відкрийте свій php.iniі додайте наступний рядок:

error_log = /log/myCustomLog.log

Дякую @chelmertez , @Boom за це (коментарі до питання).


5
я на Linux. це не згадує для мене місце розташування журналу.
Сірекс

1
@Sirex робить php -infoщось? Вам потрібно переконатися, що phpнасправді викликає PHP для запуску ...
Cullub

1
Також можливо, що в даний час php нічого не записує. Якщо це так, то ви можете відкрити php.iniі набір error_reportingдля E_ALL & ~E_DEPRECATED & ~E_STRICT, або те , що помилки ви хочете побачити, а потім встановити error_logна шлях до каталогу , в якому ви хочете , щоб ваші помилки , щоб увійти. (Примітка. Це не повний шлях до файлу, лише до каталогу.)
Cullub

1
Я знайшов лише старі журнали в / var / log / httpd /, де більшість людей рекомендують шукати, але біг php --info | grep logвказував мені на / var / www / logs, де були останні останні журнали.
ChrisBob

1
Після того, як ви встановите розташування журналу, не забудьте перезапустити Apache:sudo /etc/init.d/apache2 restart
BrianHenryIE

31

У середовищі LAMP помилки php за замовчуванням спрямовані на цей файл нижче.

/var/log/httpd/error_log

Усі журнали доступу підпадають під:

/var/log/httpd/access_log

Тож коментуйте специфікацію файлу журналу помилок php, і він просто напише тут?
Користувач

17

Як знайти журнал помилок PHP в Linux:

eric@dev /var $ sudo updatedb
[sudo] password for eric:
eric@dev /var $ sudo locate error_log

/var/log/httpd/error_log

Інший еквівалентний спосіб:

eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null

/var/log/httpd/error_log

12

Здається, що за замовчуванням php не записує помилок ніде,error_log ключ у php.ini коментується у всіх я бачив.

Як правило, я:

  1. шукайте файли php.ini. locate php.ini.
  2. Шукайте ці файли за error_reportingзначенням;

    Який слід встановити для того, щоб вам було достатньо об'єднання рівнів журналу php. ,

    Наприклад: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. Перевірте error_logзначення, щоб переконатися, що воно вказує на фактичне місце та не коментується.

    Значення за замовчуванням не дає повного шляху, лише ім'я файлу, я не знаю, де цей шлях вирішується нормально. Напевно /var/log/.


11

Ви повинні використовувати абсолютний шлях під час встановлення змінної error_log у файлі php.ini, інакше журнали помилок зберігатимуться відповідно до вашого відносного шляху.

error_log = /var/log/php.errors

Іншим рішенням буде написання простого сценарію, який перелічить усі файли журналів помилок з дерева каталогів.


10

Це також може бути, /var/log/apache2/error.logякщо ви перебуваєте в google compute engine.

І ви можете переглядати хвіст так:

tail -f /var/log/apache2/error.log

5

Якщо у вас є збірка Apache та PHP з джерела, то журнали помилок за замовчуванням генеруються у вашому, ${Apache install dir}/logs/error_logтобто загалом /usr/local/apache2/logs/error_log. В іншому випадку, якщо ви встановили його зі сховищ, ви знайдете його в /var/log/apache2/error_log.Ви можете встановити шлях у вашій php.iniтакож і перевірити його виклику phpinfo().


5

Найкращий спосіб - заглянути у свій файл httpd.conf і побачити, що таке за замовчуванням. Це також може бути відмінено вашим конкретним віртуальним хостом. Я починаю з перегляду /etc/httpd/conf/httpd.confабо /etc/apache2/httpd.confпошуку помилки_логу. Він може бути вказаний як / var / log / httpd / error_log, /var/log/apache2/error_logале також може бути вказаний просто logs/error_log.

У цьому випадку це відносний шлях, а значить, він буде під /etc/httpd/logs/error_log. Якщо ви все ще не можете його знайти, перевірте нижню частину файлу httpd.conf і подивіться, куди включені ваші віртуальні хости. Це може бути в /etc/httpd/conf.d/<- як "інше" або "додатково". Ваш віртуальний хост міг би замінити його тоді ErrorLog "/ path / to / error_log".


4

Конфігуруючи свій файл журналу помилок у php.ini, ви можете використовувати абсолютний шлях або відносний шлях. Відносний шлях буде вирішений на основі розташування створювального скрипту, і ви отримаєте файл журналу у кожній директорії, у якій є сценарії. Якщо ви хочете, щоб усі ваші повідомлення про помилки йшли до одного файлу, використовуйте абсолютний шлях до файл.

Детальніше дивіться тут: http://www.php.net/manual/en/ref.errorfunc.php#53025


Дякую, це вирішило моє питання. Дійсно кульгава поведінка щодо відносних визначень, щоб файли журналів були розповсюджені по всій папці htdocs і не знали, з чого почати дивитися. Я б очікував, що це стосується інсталяційної папки, як і інші параметри. +1.
Едуардо

4

NGINX зазвичай зберігає його в /var/log/nginx/error.log або access.log. (На Ubuntu в будь-якому випадку)


4
php --info | grep error

Це корисно. коментує sjas на питання. тому я включив це як відповідь.


2
(Здається), це виводить значення для параметрів командного рядка PHP (наприклад, /etc/php/7.1/cli/php.ini), а не для параметрів Apache.
BrianHenryIE

3

Якщо ви використовуєте журнал php5-fpm, за замовчуванням має бути пункт нижче

/var/log/php5-fpm.log

2

куди б ви цього не хотіли, якщо встановити його, виклик функції: error_log ($ errorMessageforLog. "\ n", 4, 'somePath / SomeFileName.som');


2

Знайдіть файл httpd.conf ErrorLog, запустивши cat <file location> | grep ErrorLogв командному рядку. Наприклад:

$ cat /etc/apache2/httpd.conf | grep ErrorLog

Вихід:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/private/var/log/apache2/error_log"

Знайдіть рядок, що починається з ErrorLogі там є ваша відповідь.

Примітка. Для віртуальних хостів ви можете редагувати файл віртуальних хостів, httpd-vhosts.confщоб вказати інше розташування файлу журналу.


2

журнали помилок cPanel розташовані у:

/ usr / local / cpanel / logs /

/ usr / local / apache / logs /

За замовчуванням журнали Apche розташовані всередині:

/ var / log / apache

або

/ var / log / apache2

Якщо хтось використовує спеціальне місцезнаходження журналу, ви можете перевірити це, виконавши цю команду:

cat / тощо / apache2 / conf /httpd.conf | grep ErrorLog

Якщо ви отримуєте помилку про те, що каталог apache2 не існує, ви можете запустити цю команду, щоб знайти правильне розташування:

де апаш

або

де apache2


1
  1. ви можете зайти в папку журналів перевірки файлового менеджера.
  2. перевірити Файл журналу в папці public_html.
  3. перевірте файл "php phpinfo ()", де зберігається журнал.

1

Ви знаходитесь в середовищі загального користування і не можете знайти журнал помилок, завжди перевіряйте, чи є у cPanel параметр "Помилки" на інформаційній панелі cPanel. Якщо ви не можете знайти журнал помилок, ви можете його знайти там.

На панелі пошуку cPanel пошукайте Помилка, на ній з’являться Сторінки помилок, які в основному є списками різних сторінок помилок http, а інші Помилка - там, де відображаються журнали помилок.

Інші місця для перегляду спільного середовища: / home / yourusername / logs / home / yourusername / public_html / error_log


1

щось на зразок цього :

sudo locate error.log | xargs -IX grep -iH "errorlog" X

або

sudo locate error_log | xargs -IX grep -iH "errorlog" X

або

sudo find / -iname "error?log" 2>/dev/null | xargs -IX grep -iH "errorlog" X

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.