Status keluar PHP 255: apa artinya?

33

Saya baru-baru ini menyusun biner PHP 5.2.9 , dan saya mencoba mengeksekusi beberapa skrip PHP dengannya. Saya dapat menjalankan beberapa skrip tanpa masalah, tetapi salah satunya menghentikan eksekusi di tengah jalan, keluar tanpa kesalahan atau peringatan. Kode status yang dikembalikan dari proses adalah 255.

Saya sudah membaca dalam manual bahwa status seperti itu 'dicadangkan'. Pertanyaannya adalah: untuk apa?

Saya percaya itu ada hubungannya dengan dependensi yang hilang di eksekusi PHP, tapi saya tidak yakin.

Adakah yang tahu apa arti dari kode keluar 255?

PS Tidak ada kesalahan dalam skrip PHP, mereka menjalankan OK di mesin lain.

Silvio Donnini
sumber

Jawaban:

34

255 adalah kesalahan, saya bisa mereproduksi kode keluar yang sama dengan memiliki kesalahan fatal.

Ini berarti bahwa entah bagaimana pelaporan kesalahan Anda disembunyikan, ada beberapa kemungkinan penyebabnya:

  • error_reporting tidak didefinisikan dan laporan php tidak ada kesalahan sama sekali
  • Seorang @(operator penekan kesalahan) menyembunyikan output dari kesalahan
  • STDERR dialihkan ke tempat lain (php -f somefile.php 2> / dev / null, hapus pengalihan)
  • Ini masih bisa menjadi kesalahan internal karena dependensi yang hilang dan bahwa kesalahan fatal memiliki kode keluar yang sama dengan crash program.
Weboide
sumber
1
Dalam beberapa kasus yang jarang terjadi pada Windows ini terkait dengan php.inifile yang rusak (yaitu file tersebut memiliki karakter yang rusak di dalamnya). Butuh waktu 2 jam untuk mencari tahu ini. Tip: Jika skrip Anda (yaitu composer.phar) berfungsi dengan baik php -n composer.phar, maka php.inifile Anda mungkin rusak.
tftd
9

Ini juga bisa berarti bahwa /etc/php5/cli/php.ini(pada Debian / Ubuntu) atau /etc/php.ini(pada RHEL / CentOS / dll.) Memiliki display_errors = Offyang berarti bahwa setiap kesalahan atau peringatan dari skrip baris perintah tidak akan ke mana-mana, kecuali log_errors = On(lihat juga error_logpengaturan).

Coba jalankan skrip Anda dengan skrip pembungkus yang menggunakan php -d display_errors=on ...

Alastair Irvine
sumber
3
Saya hanya ingin mengucapkan terima kasih atas -d display_errors=ontipnya — saya mencoba men-debug skrip khusus untuk aplikasi PHP seseorang yang mencoba menangani semua pengecualian dengan log on sendiri, tetapi sering memakan pengecualian. Menggunakan bendera itu saya bisa mendapatkan pengecualian untuk mencetak ke CLI!
geerlingguy
Dalam kasus saya, ini menunjukkan kepada saya bahwa skrip php melebihi waktu eksekusi maksimum. Terima kasih atas tipnya!
Max Vernon
0

Ini mungkin disebabkan oleh pesan kesalahan PHP yang ditekan (baris dimulai dengan @). Saya menemukan garis dengan

grep -r "@" src/ 

dan kemudian berkomentar @. Setelah ini saya mendapatkan kesalahan aktual dan dapat memperbaikinya dengan mudah. Saya juga memperhatikan setelah itu bahwa PHPStorm telah menemukan kesalahan yang sama, tetapi saya belum memperbaikinya.

Antti Hätinen
sumber
0

Itu juga bisa berarti itu

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

  • /etc/php.ini (di RHEL / CentOS / dll.)

telah ditetapkan

display_errors = Off 

yang berarti bahwa setiap kesalahan atau peringatan dari skrip baris perintah tidak akan ke mana-mana, kecuali

log_errors = On 

Lihat juga pengaturan error_log.

Coba jalankan skrip Anda dengan pembungkus

Alauddin
sumber
0

Dalam kasus saya itu adalah kematian xDebug karena xdebug.max_nesting_levelnilai rendah .

bersemangat
sumber