Sanal Konak başına error_log?


113

Apache ve PHP 5 çalıştıran bir Linux Sunucusunda, ayrı günlük dosyalarına sahip birden çok Sanal Konakımız var. Php'yi error_logsanal konaklar arasında ayıramıyoruz.

Bu ayarı geçersiz kılma <Location>ait httpd.confbir şey yapmak gibi görünmüyor.

error_logsHer Sanal Konak için ayrı php'ye sahip olmanın bir yolu var mı?

Yanıtlar:


81

Apache ( PHP değil ) günlüğünü ayarlamak için , bunu yapmanın en kolay yolu şudur:

<VirtualHost IP:Port>
   # Stuff,
   # More Stuff,
   ErrorLog /path/where/you/want/the/error.log
</VirtualHost>

Başında "/" yoksa göreceli olduğu varsayılır.

Apache Hata Günlüğü Sayfası


7
Yani PHP hata günlüğüne ayrı olan apache hata günlüğü, var (diğer yorumları görmek)
thelem

neye göre? httpd.confyazdığı dizin veya?
mb21

141

Biri arayarak gelirse şöyle görünmeli:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/domains/example.com/html
    ErrorLog /var/www/domains/example.com/apache.error.log
    CustomLog /var/www/domains/example.com/apache.access.log common
    php_flag log_errors on
    php_flag display_errors on
    php_value error_reporting 2147483647
    php_value error_log /var/www/domains/example.com/php.error.log
</VirtualHost>

Bu, yalnızca display_erroraçıldığı için geliştirme içindir . Apache hata günlüğünün PHP hata günlüğünden ayrı olduğunu fark edeceksiniz. İyi şeyler içeride php.error.log.

Http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reportingerror_reporting anahtarı için buraya bir göz atın


8
Yapılandırmanıza bağlı olarak, günlük dosyasını manuel olarak oluşturmanız ve sahibi / grubu Apache'nin kullandığı kullanıcı / gruba ayarlamanız gerekebilir. Apache, günlük dosyasına yazamazsa sizi uyarmaz.
Ian Dunn

"Error_reporting" değerinin, daha fazla hata düzeyi ekledikçe PHP'nin yeni sürümlerinde değiştiğini unutmayın. E_ALL = "30719" hemen şimdi.
ReactiveRaven

2
"Error_reporting" değerleri değişmeye devam ettiğinden ve "E_ALL" ve "E_STRICT" gibi PHP sabitlerini php dışında kullanamayacağınız için, TÜM hataları her zaman günlüğe kaydettiğinizden emin olabilirsiniz: php_value error_reporting 2147483647
Buttle Butkus

Günlüğünüzü neden kamuya açık alanınızda görmek istiyorsunuz?
AlxVallejo

1
Günlük dosyası herkese açık olmayacak. / html / kamusal alandır.
Debriyaj

13

Genellikle sadece bu belirtmek .htaccessdosyası veyavhost.conf ben üzerinde çalışıyorum etki alanında. Bunu şu dosyalardan birine ekleyin:

php_admin_value error_log "/var/www/vhosts/example.com/error_log"

1
Biri php_admin_valueve arasındaki fark hakkında yorum yapabilir php_valuemi?
Nick M

1
Bu farkı açıklıyor: mattiasgeniar.be/2012/02/18/…
Jeremy

9

Error_log () için varsayılan davranış Apache hata günlüğüne çıktı vermektir. Bu olmuyorsa error_log yönergesi için php.ini ayarlarınızı kontrol edin. Mevcut sankon için Apache günlük dosyasını kullanmak için bunu ayarlamadan bırakın.


Kontrol edeceğim. Geliştiricilere, diğer hassas verileri içerebilecek apache hata günlüğünü vermeden kodlarında hata ayıklama şansı vermek istediğimizde apache ve php hata günlüğünü ayrı tutmanın mümkün olup olmadığını merak ediyorum.
Michael Stum

7

Eşyalarınızın error_lognereye gideceğini ayarlamayın , çünkü hatalar tarafından yakalanacaktır . Bunun yerine, günlükler için proje klasörünüzde bir oluşturun ve yapın . Bu hem dosyalar hem de sankonlar için geçerlidir . Ayrıca emin koymak yapmak üzerinesyslogeg /var/log/apache2ErrorLogsubdirphp_value error_log "/path/to/project/logs".htaccess php_flag log_errors


İlginç. Bu davranış, error_log dosyasının yoluna mı bağlı?
demonkoryu

6

php_value error_log '/path/to/php_error_logVirtualHost yapılandırmanıza eklemeyi denediniz mi?


6

Evet deneyebilirsin

php_value error_log "/var/log/php_log" 

içinde .htaccessvar olabilir veya kullanıcıların kullanmak ini_set()onlar günlüğü yapmak istiyorsanız kendi komut başında.

Diğer bir seçenek, komut dosyalarının komut dizisinin php.inibulunduğu klasörde varsayılan olarak ayarlanması, ardından kullanıcının / ana bilgisayarın kök klasörüne, ardından sunucunun köküne veya benzer bir şeye gitmesini sağlamaktır. Bu, ev sahiplerinin kendi php.inideğerlerini ve kendi error_logkonumlarını eklemelerine izin verir .


6
php_value error_log "/var/log/httpd/vhost_php_error_log"

Benim için çalışıyor, ancak günlük dosyasının iznini değiştirmem gerekiyor.

veya Apache, günlüğü onun error_log.


5

Apache'min httpd.conf dosyasında buna benzer bir şey vardı. Sadece ErrorLog ve CustomLog ayarlarını değiştirin

<VirtualHost myvhost:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /opt/web
    ServerName myvhost
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log common
</VirtualHost>

1
Burada Apache günlüğünden değil, PHP günlüğünden bahsediyoruz.
demonkoryu

4

Deneyebilirsin:

    <VirtualHost myvhost:80>
       php_value error_log "/var/log/httpd/vhost_php_error_log"
    </Virtual Host>

Ama işe yarayıp yaramayacağından emin değilim. Sitelerimde başarılı olamadım.


2

Basit VirtualHost Oluşturun:

örnek ana bilgisayar adı: - thecontrolist.localhost

  1. C: \ Windows \ System32 \ drivers \ etc

    127.0.0.1 thecontrolist.localhost ana bilgisayar dosyasında

  2. C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf

    <VirtualHost *>
      ServerName thecontrolist.localhost
      ServerAlias thecontrolist.localhost
      DocumentRoot "/xampp/htdocs/thecontrolist"
      <Directory "/xampp/htdocs/thecontrolist">
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
    
  3. Apache'nizi yeniden başlatmayı unutmayın. daha fazlası için bu bağlantıyı kontrol edin

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.