PHP hata günlüğünü nerede saklıyor? (php5, apache, fastcgi, cpanel)


392

Paylaşılan hosting ve Cpanel, Apache, PHP fastcgi tarafından çalıştırılır var. PHP hata günlüğünü nerede saklıyor?

Error_log dosyalarını aramak için site yapısının tamamından geçmek yerine, paylaşılan günlük ortamında hata günlüğünü bulabilmemin başka bir yolu var mı?

Ben erişebilir php.ini(PHP sürümü 5.2.16 kullanıyorum).


25
Linux'ta ya /var/log/httpd/error_logya /var/log/apache2/error.log. Bu dosyalar root'a aittir, bu nedenle root olmanız veya sudogörmek için kullanmanız veya okumanız gerekir.
Eric Leschinski

112
php --info | grep error
sjas

8
Windows çözümü arayanlar için php --info | findstr /r /c:"error_log"günlük dosyasının nerede olduğunu görmek için kullanın .
Boom

1
Benim için oldukça garip ... Web sitesini barındırdım ve PHP günlükleri Apache günlükleriyle aynı dosyada saklanıyor ... Yönetici panelimde, günlüklerde, tıkladığımda tam Apache hata günlüğünü gösterme seçeneği var, örneğin, girmemesi gereken yerlere giren kullanıcılar hakkında hatalar var. Ancak, aynı dosyada PHP'nin gösterdiği hatalar var.
RedClover

@ soaku fastcgi kullanırsanız apache'nin kendisi PHP çalıştırmaz. apache modülü olan mod_php kullandığınızda apache php'yi işler. Bu, mod_php kullanırken hataların apache günlüklerinde olabileceği ve muhtemelen olacağı anlamına gelir, ancak cgi veya fastcgi kullanılırken durum böyle olmaz
Gall Annonim

Yanıtlar:


314

PHP /var/log/apache2bir apache2 modülü ise PHP hata günlüklerini saklar . Paylaşılan ana makineler genellikle günlük dosyalarını kök dizini /logalt klasörünüzde depolar. Ancak ... bir php.inidosyaya erişiminiz varsa bunu yapabilirsiniz:

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

Rinogo'nun yorumuna göre : cPanel kullanıyorsanız, muhtemelen aradığınız ana günlük dosyası (varsayılan olarak)

/usr/local/apache/logs/error_log

Her şey başarısız olursa, günlük dosyasının konumunu kullanarak

<?php phpinfo(); ?>

20
"Php bir apache2 ise php hata günlüklerini / var / log / apache2 içinde saklar" RHEL'de değil, paketin adı 'httpd'. Gerçekten bir paket adının dağıtımlar arasında tutarlı olduğunu varsayamazsınız.
chelmertz

28
FYI - Google Çalışanları - cPanel kullanıyorsanız, muhtemelen aradığınız ana günlük dosyası (varsayılan olarak) şu /usr/local/apache/logs/error_log
adreste

5
ancak <?php phpinfo(); ?>yolu onaylamak için 'error_log' bölümünü kontrol edin
doub1ejack

apache2 modülü değilse ne olacak? örneğin, nginx üzerinde çalışan bir fpm debian paketi olabilir.
n611x007

2
phpinfo bölümünde nerede gösterecek? error_log anahtar / değer için gördüğüm tüm 'error_log' ve gerçek bir yol yok
Robert Sinclair

86

phpinfo()"Error_log" u deneyin ve kontrol edin


13
Sadece error_log yol belirtilmedi diyor . Belki bir paylaşılan barındırma çevre üzerinde olduğundan ve eğer biz erişim vardı, biz herkesin başka site hataları görürdüm sanırım.
PHPLOVER

8
@PHPLOVER denerseniz aynı şey söyler echo ini_get('error_log');mi?
chelmertz

Bunu denemedim ama php.ini dosyasında aynı dedi, bu yüzden ne yaptım php.ini dosyasında yolunu değiştirmek ve çalışıp çalışmadığını görmek için kontrol etti. Hataları (belge kökü dışında) yolunu değiştirmeme rağmen hala tüm hataları günlüğe kaydediyor mu? thanks phplover
PHPLOVER

2
@PHPLOVER: error_reporting(E_ALL|E_STRICT);se.php.net/manual/tr/function.error-reporting.php
chelmertz

3
Benimki de error_log diyor, nereden arayacağına dair bir fikrim yok. Bu, Google'da bir numaraya gelir, ancak cevap vermez.
HMR

54

Linux

php --info | grep error 

Terminal hata günlüğü konumunu verir.

pencereler

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

Komut istemi hata günlüğü konumunu çıktılar

Günlük konumunu ayarlamak için

Kendi php.inisatırınızı açın ve aşağıdaki satırı ekleyin:

error_log = /log/myCustomLog.log

Teşekkürler @chelmertez , bunlar için @Boom (soru üzerine yorumlar).


5
linux im. bu benim için bir günlük konumdan bahsetmiyor.
Sirex

1
@Sirex php -infoçıktı üretir mi? phpAslında çalıştırmak için PHP çağırdığınızdan emin olmanız gerekir ...
Cullub

1
Ayrıca, php şu anda bir şey günlüğe kaydetmemek mümkündür. Eğer durum buysa, senin açabilir php.inive set error_reportingiçin E_ALL & ~E_DEPRECATED & ~E_STRICTveya görmek istediğiniz her türlü hatalar, daha sonra ayarlamak error_logsize hatalar yapılıyor istediğiniz dizine yoluna. (Not: Bu, bir dosyanın tam yolu değildir, sadece bir dizine
yöneliktir

1
Ben sadece / var / log / httpd / nerede çoğu kişi seyir tavsiye eski günlükleri buldum , ama çalışan php --info | grep logbeni / var / www / günlükleri nerede en son günlükleri bulunduğu işaret etti.
ChrisBob

1
Günlük konumunu ayarladıktan sonra, Apache'yi yeniden başlatmayı unutmayın:sudo /etc/init.d/apache2 restart
BrianHenryIE

31

LAMP ortamında php hataları varsayılan olarak aşağıdaki dosyaya yönlendirilir.

/var/log/httpd/error_log

Tüm erişim günlükleri:

/var/log/httpd/access_log

Yani php hata günlük dosyası belirtimi yorum ve sadece buraya yazacak?
Kullanıcı

17

Linux'ta PHP hata günlüğünüzü nasıl bulabilirsiniz:

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

/var/log/httpd/error_log

Eşdeğer başka bir yol:

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

/var/log/httpd/error_log

12

Görünüşe göre php varsayılan olarak hiçbir yerde hataları günlüğeerror_log kaydetmez, php.ini anahtar gördüğüm tüm yükleme 's yorumladı.

Genellikle ben:

  1. php.ini dosyalarını arayın. locate php.ini.
  2. Bu dosyaları error_reportingdeğer arayın ;

    Hangi php günlüğü düzeyleri birleşimi sizin için yeterli olana ayarlanmalıdır. ,

    Örneğin: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. error_logGerçek bir yere işaret ettiğinden ve yorum yapılmadığından emin olmak için değeri kontrol edin.

    Varsayılan değer tam bir yol vermez, sadece bir dosya adı, bu yolun normal olarak nerede çözüldüğünü bilmiyorum. Muhtemelen /var/log/.


11

Php.ini dosyanızdaki error_log değişkenini ayarlarken mutlak yolu kullanmalısınız , aksi takdirde hata günlükleri göreli yolunuza göre saklanır.

error_log = /var/log/php.errors

Diğer çözüm, dizin ağacından tüm hata günlükleri dosyalarını listeleyecek basit bir komut dosyası yazmak olacaktır.


10

Ayrıca olabilir /var/log/apache2/error.loggoogle hesaplama motoru ise.

Ve kuyruğu şöyle görebilirsiniz:

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

5

Kaynaktan Apache ve PHP oluşturduysanız, varsayılan olarak hata günlükleri ${Apache install dir}/logs/error_loggenel olarak oluşturulabilir /usr/local/apache2/logs/error_log. Else, depodan yüklediyseniz, adresinde bulabilirsiniz /var/log/apache2/error_log. php.iniAyrıca yolunuzu da ayarlayabilir ve çağırarak doğrulayabilirsiniz phpinfo().


5

En iyi yol httpd.conf dosyanıza bakmak ve varsayılanın ne olduğunu görmektir. Ayrıca, özel sanal ana bilgisayarınız tarafından geçersiz kılınabilir. Ben /etc/httpd/conf/httpd.confveya /etc/apache2/httpd.confile bakarak başlamak ve error_log için arama. / Var / log / httpd / error_log /var/log/apache2/error_logolarak listelenebilir veya basitçe de listelenebilir logs/error_log.

Bu durumda, göreceli bir yoldur, yani altında olacaktır /etc/httpd/logs/error_log. Hala bulamıyorsanız, httpd.conf dosyanızın altını kontrol edin ve sanal ana makinelerinizin nerede bulunduğunu görün. /Etc/httpd/conf.d/<- içinde "diğer" veya "ekstra" olabilir. Sanal ana makineniz daha sonra ErrorLog "/ path / to / error_log" ile geçersiz kılabilir.


4

Hata günlük dosyanızı php.ini dosyasında yapılandırırken, mutlak bir yol veya göreceli bir yol kullanabilirsiniz. Göreli bir yol, oluşturma komut dosyasının konumuna bağlı olarak çözülür ve komut dosyalarının bulunduğu her dizinde bir günlük dosyası alırsınız. Tüm hata mesajlarınızın aynı dosyaya gitmesini istiyorsanız, dosya.

Daha fazlasını burada görebilirsiniz: http://www.php.net/manual/en/ref.errorfunc.php#53025


Teşekkürler, bu sorunumu çözdü. Gerçekten göreli tanımları için topal davranış, günlük dosyaları htdocs klasörüne yayılmış olması ve nereye bakmaya başlayacağımız hakkında hiçbir fikrim yok. Diğer ayarlar gibi, kurulum klasörüne de görebilecektim. +1.
Eduardo

4

NGINX genellikle /var/log/nginx/error.log veya access.log içinde depolar. (Her durumda Ubuntu'da)


4
php --info | grep error

Bu yardımcı olur. sjas tarafından soru üzerine yorumlanmıştır. bu yüzden bir cevap olarak dahil.


2
(Görünüşe göre) bu, Apache ayarları yerine PHP komut satırı ayarlarının (örn. /Etc/php/7.1/cli/php.ini) değerini verir.
BrianHenryIE

3

Eğer php5-fpm kullanıyorsanız günlük varsayılanı altında olmalıdır

/var/log/php5-fpm.log

2

istediğiniz yere, işlevinizi ayarlarsanız: call_log ($ errorMessageforLog. "\ n", 4, 'somePath / SomeFileName.som');


2

İçin httpd.conf dosyasını ara ErrorLogçalıştırarak cat <file location> | grep ErrorLogkomut satırında. Örneğin:

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

Çıktı:

# 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"

İle başlayan satırı bulun ErrorLog cevabınız burada.

Not: Sanal ana makineler için, httpd-vhosts.conffarklı bir günlük dosyası konumu belirtmek üzere sanal ana bilgisayarlar dosyasını düzenleyebilirsiniz .


2

cPanel Hata günlükleri şurada bulunur:

/ Usr / local / cpanel / günlükleri /

/ Usr / local / apache / logs /

Varsayılan olarak Apche günlükleri içinde bulunur:

/ Var / log / apache'nin

veya

/ Var / log / apache2

Herhangi biri özel günlük konumunu kullanıyorsa, bu komutu çalıştırarak kontrol edebilirsiniz:

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

Apache2 dizininin bulunmadığı hatası alıyorsanız, doğru konumu bulmak için bu komutu çalıştırabilirsiniz:

burada apache

veya

burada apache2


1
  1. Dosya Yöneticisi kontrol günlükleri klasörüne gidebilirsiniz.
  2. public_html klasöründeki Günlük dosyasını kontrol edin.
  3. günlük deposu "php phpinfo ()" dosyasını kontrol edin.

1

Paylaşım ortamındasınız ve hata günlüğünü bulamıyorsunuz, her zaman cPanel'de cPanel kontrol panelinizde Hatalar seçeneği olup olmadığını kontrol edin. Hata günlüğünü bulamıyorsanız, orada bulabilirsiniz.

CPanel arama çubuğunda, Hata Ara, temelde farklı http hata sayfalarının listesi olan Hata Sayfalarını gösterir ve diğer Hata hata günlüklerinin görüntülendiği yerdir.

Paylaşılan ortama bakılacak diğer yerler: / home / kullanıcı adınız / günlükler / home / kullanıcı adınız / public_html / error_log


1

böyle bir şey:

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

veya

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

veya

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.