Vă mulțumim pentru susținere

error_log per gazdă virtuală?

Pe un server Linux care rulează Apache și PHP 5, avem mai multe găzduări virtuale cu fișiere log separate. Nu putem să separăm php error_log între gazde virtuale.

Overriding this setting in the of the httpd.conf does not seem to do anything.

Există o modalitate de a avea php error_logs separat pentru fiecare gazdă virtuală?

0
adăugat editat

8 răspunsuri

De obicei, specific acest lucru într-un fișier .htaccess sau vhost.conf din domeniul pe care lucrez. Adăugați-l la unul dintre aceste fișiere:

php_admin_value error_log "/var/www/vhosts/example.com/error_log"
0
adăugat
Aceasta explică diferența:
adăugat autor Jeremy
Poate cineva să comenteze diferența dintre php_admin_value și php_value ?
adăugat autor Nick M

Comportamentul implicit este pentru ca error_log () să fie trimis în jurnalul de erori Apache. Dacă nu se întâmplă acest lucru, verificați setările php.ini pentru directiva error_log - lăsați-o dezactivată pentru a folosi fișierul jurnal Apache pentru vhost-ul curent.

0
adăugat
Voi verifica. Mă întreb doar dacă este posibil ca apache și logoul de erori php să fie separate atunci când vrem să dăm dezvoltatorilor șansa de a depana codul lor fără a le da jurnalul de erori apache care ar putea conține alte date sensibile.
adăugat autor Michael Stum

Pentru a seta jurnalul Apache ( nu ), cel mai simplu mod de a face acest lucru ar fi să faceți:


   # Stuff,
   # More Stuff,
   ErrorLog /path/where/you/want/the/error.log

Dacă nu există "/", se presupune că este relativă.

Pagina de înregistrare a erorilor Apache

0
adăugat
jurnalul de erori al php-ului este implicit în jurnalul de erori al Apache.
adăugat autor helloandre
în raport cu ce? directorul httpd.conf este scris în, sau?
adăugat autor mb21
cum ar putea fi votat acest lucru ca fiind cel mai bun răspuns?
adăugat autor fdsfdsfdsfds
Acesta este jurnalul de erori Apache, care este separat de jurnalul de erori PHP (vezi alte comentarii)
adăugat autor thelem

Dacă cineva vine în căutarea, ar trebui să arate astfel:


    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

Aceasta este doar pentru dezvoltare, deoarece display_error este activată. Veți observa că jurnalul de erori Apache este separat de jurnalul de erori PHP. Lucrurile bune sunt în php.error.log .

Take a look here for the error_reporting key http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

0
adăugat
Fișierul jurnal nu ar fi public. / html / este spațiul public.
adăugat autor Clutch
De ce doriți să vă înregistrați în spațiul dvs. de domeniu public?
adăugat autor AlxVallejo
Deoarece valorile "error_reporting" continuă să se schimbe și din moment ce nu puteți utiliza constante PHP precum "E_ALL" și "E_STRICT" în afara php-ului, acesta este modul în care vă asigurați că aveți întotdeauna toate erorile logate: php_value error_reporting 2147483647
adăugat autor Buttle Butkus
În funcție de configurația dvs., poate fi necesar să creați manual fișierul jurnal și să setați proprietarul / grupul la același utilizator / grup pe care îl folosește Apache. Apache nu vă va avertiza dacă nu poate scrie în fișierul jurnal.
adăugat autor Ian Dunn
Rețineți că valoarea "error_reporting" se modifică odată cu noile versiuni de PHP, deoarece acestea adaugă mai multe niveluri de eroare. E_ALL = "30719" chiar acum.
adăugat autor ReactiveRaven

Apache-ul meu a avut ceva de genul asta în httpd.conf. Doar modificați setările ErrorLog și CustomLog


    ServerAdmin [email protected]
    DocumentRoot /opt/web
    ServerName myvhost
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log common

0
adăugat
Vorbim despre jurnalul PHP, nu despre jurnalul Apache aici.
adăugat autor demonkoryu

Da, puteți încerca,

php_value error_log "/var/log/php_log" 

în .htaccess sau puteți avea utilizatorii să utilizeze ini_set () la începutul scripturilor lor dacă doresc să aibă logare.

O altă opțiune ar fi să activați script-urile implicit la php.ini în folderul cu scriptul, apoi să mergeți la directorul rădăcină al utilizatorului / gazdei, apoi la rădăcina serverului sau ceva similar. Acest lucru ar permite gazdei să-și adauge propriile valori php.ini și propriile locații error_log .

0
adăugat

Ați încercat să adăugați codul php_value error_log / path / to / php_error_log în configurația dvs. VirtualHost?

0
adăugat

Nu setați error_log în cazul în care chestia syslog merge, de exemplu / var / log / apache2 , deoarece erorile vor fi interceptate de < > ErrorLog . În schimb, creați un subdir în folderul proiectului pentru jurnale și faceți php_value error_log "/ path / to / / code>. Acest lucru este valabil atât pentru .htaccess fișierele și vhosts . De asemenea, asigurați-vă că ați pus php_flag log_errors pe

0
adăugat
Interesant. Acest comportament depinde de calea fișierului error_log?
adăugat autor demonkoryu