PHP çıkış durumu 255: bu ne anlama geliyor?


33

Geçenlerde bir PHP 5.2.9 ikili dosyası derledim ve onunla birlikte bazı PHP betiklerini çalıştırmaya çalıştım. Bazı senaryoları sorunsuzca çalıştırabilirim, ancak bunlardan biri idamını yarıda keserek hata veya uyarı olmadan çıkmayı bıraktı. İşlemin döndürülen durum kodu 255'tir.

Kılavuzda bu durumun 'rezerve' olduğunu okudum. Soru şudur: Ne için?

PHP çalıştırılabilir dosyadaki eksik bağımlılıkla ilgili bir şey olduğuna inanıyorum, ancak emin olamıyorum.

255 çıkış kodunun ne anlama geldiğini bilen var mı?

PS PHP betiklerinde hata yok, diğer makinelerde Tamam çalışıyorlar.

Yanıtlar:


34

255 bir hatadır, aynı çıkış kodunu ölümcül bir hatayla çoğaltabilirim.

Bu, bir şekilde hata raporlamanızın gizli olduğu, bunun için bazı olası nedenler olduğu anlamına gelir:

  • error_reporting tanımlanmadı ve php hiç hata bildirmedi
  • Bir @(hata bastırma işleci) hatanın çıktısını gizler
  • STDERR başka bir yere yönlendirilir (php -f somefile.php 2> / dev / null, yönlendirmeyi kaldır)
  • Bu hala eksik bağımlılıklar nedeniyle dahili bir hata olabilir ve ölümcül bir hatanın bir program çökmesiyle aynı çıkış koduna sahip olması.

1
Windows'taki bazı nadir durumlarda bu, bozuk bir php.inidosyayla ilgilidir (örn., Dosya içinde bozuk paralar vardır). Bunu anlamak için 2 saatimi aldı. İpucu: Komut dosyanız (yani composer.phar) ile çalışıyorsa php -n composer.phar, php.inidosyanız muhtemelen bozuktur.
tftd

9

Bu aynı zamanda /etc/php5/cli/php.ini(Debian / Ubuntu'da) veya /etc/php.ini(RHEL / CentOS / vb'de) display_errors = Offkomut satırı betiklerinden gelen herhangi bir hata veya uyarının hiçbir yere gidemeyeceği anlamına da gelebilir log_errors = On(ayrıca error_logayara bakın).

Komut dosyalarınızı, kullanan bir sarmalayıcı komut dosyasıyla çalıştırmayı deneyin. php -d display_errors=on ...


3
Sadece -d display_errors=onbahşiş için teşekkür etmek istiyorum; birinin istisna günlüğünü kendi başına işlemeye çalışan birinin PHP uygulaması için özel bir betiği ayıklamaya çalışıyordum, ancak çoğu zaman istisnalar da yer. Bu bayrağı kullanarak CLI!
geerlingguy

Benim durumumda, bu bana php betiğinin azami yürütme süresini aştığını gösterdi. Harika bahşiş için teşekkürler!
Max Vernon

0

Bu PHP tarafından bastırılmış hata mesajlarından kaynaklanıyor olabilir (satır @ ile başlar). Çizgiyi buldum

grep -r "@" src/ 

ve sonra @ yorumladı. Bundan sonra gerçek hatayı aldım ve kolayca düzeltebildi. Daha sonra PHPStorm'un da aynı hatayı bulduğunu fark ettim, ancak bunu düzeltmedim / fark etmedim.


0

Bu da demek olabilir

  • /etc/php5/cli/php.ini (Debian / Ubuntu'da)

  • /etc/php.ini (RHEL / CentOS / vb. üzerinde)

ayarladı

display_errors = Off 

bu, komut satırı komut dosyalarındaki herhangi bir hata veya uyarının hiçbir yere gidemeyeceği anlamına gelir

log_errors = On 

Ayrıca error_log ayarına bakın.

Komut dosyalarınızı bir sarmalayıcı ile çalıştırmayı deneyin


0

Benim durumumda nedeniyle düşük xdebug ölümdü xdebug.max_nesting_leveldeğeri.

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.