2008-09-20 13 views
16

PHP hatalarını görüntülemek/html istemiyorum, ancak bunların görüntülenmesini istiyorum /html/beta/usercomponent. Her şey, hataların hiç görüntülenmeyeceği şekilde ayarlanmıştır. Sadece bir klasörde (ve alt klasörlerinde) görünecek hataları nasıl alabilirim?Sadece bir alt klasörde PHP hatalarını görüntüleyebilirim

+1

Diğer her şey başarısız olursa, 'set_error_handler (" var_dump ");'. Çağırma komut dosyasındaki sözdizimi hataları için de olsa, her şeyin php.ini/.htaccess/.user.ini aracılığıyla önceden yapılandırılması gerekir. – mario

cevap

28

:

php_value error_reporting 2147483647 

Bu sayı, hangi değerlerin birlikte el daha parçalı bir ayar istiyor VEYA eğer bakılmaksızın versiyonunun 'hepsi' hataları etkinleştirmek veya çalışmalıdır belgelere göre

php -r 'echo E_ALL | E_STRICT ;' 
Php değerini sizin için hesaplamak için

.

Sen .htaccess dosyaları etkinleştirmek için apaches ana konfigürasyonda

AllowOverride All 

gerekir.

bu konuda

Daha Okuma burada bulabilirsiniz :


Bildirim Eğer mod_php yerine Php-CGI kullanıyorsanız Bu işe yaramayabilir reklamı ve alacak tüm dahili sunucu hatası olduğunu ve yanlışlıkla önce

error_reporting(E_ALL | E_STRICT); 

veya benzeri yapıları ile Her komut dosyası bazında ya site geneli etkinleştirmeden daha seçeneği olmadan başka kalacak şekilde oluşur.

Benim önerim kullanıcı için gösterme hatasını devre dışı bırakmak ve yoğun php's error_log özelliğini kullanmaktır. Bu çok gürültülü olma ile ilgili sorunlar varsa

display_errors = 0 
error_logging = E_ALL | E_STRICT 
error_log = /var/log/php 

, bu sadece seçici bildirme kapalı hatayı almak gerekir belirtisi değildir, bu kodu düzeltmek gerekir bir işaret birisi.


@Roger

Evet, siz de apaches yapılandırmasında < Rehber> yapı içinde kullanabilirsiniz, ancak, bu durumda .htaccess eşdeğerdir ve özellikle sen eğer daha taşınabilir hale getirir Aynı codebase'in birden fazla çalışma çıkış kopyası var ve bu değişikliği hepsine dağıtmak istiyorsunuz.

Birden sanal konaklar varsa, aksi takdirde söz konusu sanal barındıran tanımı yapısını isteyeceksiniz, evet

<Directory /path/to/wherever/on/filesystem> 
     <IfModule mod_php5.c> 
     php_value error_reporting 214748364 
     </IfModule> 
    </Directory> 

komutlar sadece güvenlik ağı olan "ifmodule" Ek yukarıdaki sorunla yüzden Eğer mod_php yoksa apache ölüyor.

+1

Hey, üzgünüm, sadece bu sisteme alışıyorum. Mümkünse httpd.conf dosyasında yapmaya çalışıyorum. O php_value 2147483647 error_reporting Ya da .htaccess dosyasında yapılması gereken gerek yok /html/beta/usercomponent"> gibi gibi görünecektir? –

+1

Burada bir not olarak, PHP-CGI hatalarını nasıl açacağınızı arıyorsanız: şimdi htaccess dosyalarına çok benzer bir şekilde çalışan dizin başına .user.ini dosyalarını kullanabilirsiniz (PHP 5.3'ten itibaren). .Fakat 'php_flag display_errors 'yazıp yerine' display_errors = on' yazınız. Daha fazla bilgi için: http://php.net/manual/en/configuration.file.per-user.php – PaulSkinner

+1

Ayrıca, bu sayfadaki yorumlarda da belirtildiği gibi: "Değişikliklerin tümünün yayılması biraz zaman alabilir Uzun bir süreç zamanınız varsa işler. " bu yüzden sabırlı ol. – PaulSkinner

0

Bu 'a basit bir yanıt olduğuna inanmıyorum, ancak kesinlikle yanlış olduğunuzu kanıtlamak isterim.

düzenleme: bu durum, .htaccess dosyalarından kontrol edilebilir. Teşekkürler millet! :)

Komut dosyasındaki ayarı komut dosyası temelinde değiştirmek için error_reporting() http://docs.php.net/manual/en/function.error-reporting.php'u kullanabilirsiniz. Her zaman/html/beta/usercomponent adresinde yer alan tek bir komut dosyanız varsa, bu hile yapacaktır. .htaccess yılında

4

Hata bildirimini bir .htaccess dosyasından denetlemenin en kolay yolu. Ancak bu, Apache'yi kullandığınızı ve/html/beta/usercomponent dosyasındaki komut dizilerinin bu dizinden çağrıldığını ve başka bir yerde bulunmadığınızı varsaymaktadır.

.htacess

php_value error_reporting [int] 

Sen error_reporting belgelerinde açıklandığı şekilde Apache .htaccess yorumladığı zaman E_ERROR gibidir sabitleri tanımlı olmadığı için, listeden tamsayı değeri bizzat oluşturmak zorunda kalacaktır.

Basit bir bitumlu bayrak, yani 12 değeri, örneğin, E_WARNING + E_PARSE + E_NOTICE.

4

Bunu bir Ortam değişkeni kullanarak yapabilirsiniz. Bu şekilde, özel bir dizin için Hata raporlamayı açma/kapamadan daha fazla seçeneğe sahip olabilirsiniz. Belirli bir yönetmen kümesi veya mod çalıştırmak için herhangi bir davranışı değiştirmek istediğiniz kodunuzda, bir ortam değişkeninin ayarlanıp ayarlanmadığını kontrol edin.

if ($_ENV['MY_PHP_APP_MODE'] == 'devel') { 
    // show errors and debugging info 
} elseif ($_ENV['MY_PHP_APP_MODE'] == 'production') { 
// show some cool message to the user so he won't freak out 
// log the errors and send email to the admin 
} 

ve geliştirme ortamında uygulama çalışırken, böyle .htaccess dosyasında bir env değişkeni ayarlayabilirsiniz: Böyle

setenv MY_PHP_APP_MODE devel 

veya üretim EVN olduğunda Aynı teknik durumunuz için de geçerlidir. Özel bir şey yapmak istediğiniz dizinlerde (hata bildirimini açın) bazı env değişkenlerini ayarlayın ve kodunuzda bunu kontrol edin.

İlgili konular