Saya mendapat kesalahan:
Parse error: syntax error, unexpected end of file in the line
Dengan kode ini:
<html>
<?php
function login()
{
// Login function code
}
if (login())
{?>
<h2>Welcome Administrator</h2>
<a href=\"upload.php\">Upload Files</a>
<br />
<a href=\"points.php\">Edit Points Tally</a>
<?php}
else
{
echo "Incorrect login details. Please login";
}
?>
Some more HTML code
</html>
Apa masalahnya?
php
html
parse-error
pratnala
sumber
sumber
short_tags
di php.ini Anda di bawah KEDUAapache
dancli
konfigurasiJawaban:
Anda harus menghindari ini (di akhir kode Anda):
dan ini:
Anda tidak boleh meletakkan tanda kurung tepat di dekat tanda buka / tutup
php
, tetapi pisahkan dengan tanda spasi:juga hindari
<?
dan gunakan<?php
sumber
<? } ?>
alih-alih<?php } ?>
.Saya memiliki kesalahan yang sama, tetapi saya memperbaikinya dengan memodifikasi
php.ini
file.Temukan file php.ini Anda, lihat Bung, di mana php.ini saya?
kemudian buka dengan editor favorit Anda.
Cari
short_open_tag
properti, dan terapkan perubahan berikut:sumber
<? ?>
(catatan, yang hilangphp
). Saya ditugaskan untuk menambah atau mengubah fitur, dan biasanya bukan ide yang baik untuk mengubah segalanya hanya untuk satu atau dua fitur. Jawaban Anda sangat membantu.Ada dua metode berbeda untuk menyiasati sintaks kesalahan parse.
Metode 1 (file PHP Anda)
Hindari di file PHP Anda ini:
Pastikan Anda meletakkannya seperti ini
Metode 2 (file php.ini)
Ada juga cara sederhana untuk menyelesaikan masalah Anda. Cari nilai
short_open_tag
properti (Gunakan di editor teks Anda denganCtrl + F
!) , Dan terapkan perubahan berikut:untuk
Menurut uraian arahan inti php.ini ,
short_open_tag
memungkinkan Anda untuk menggunakan tag buka pendek (<?
) meskipun ini dapat menyebabkan masalah ketika digunakan dengan xml (<?xml
tidak akan berfungsi saat ini diaktifkan)!sumber
Cukup buka php.ini lalu temukan
short_open_tag= Off
set keshort_open_tag= On
sumber
Carilah loop atau pernyataan yang tidak tertutup.
Saya mengalami masalah ini ketika saya meninggalkan php foreach: tag tidak tertutup.
Menutupnya menggunakan yang berikut memecahkan kesalahan sintaks:
unexpected end of file
Semoga ini bisa membantu seseorang
sumber
Pastikan Anda telah menutup kelas Anda.
Misalnya, jika Anda memiliki kelas controller dengan metode, dan secara tidak sengaja Anda menghapus braket akhir, yang menutup seluruh kelas, Anda akan mendapatkan kesalahan ini.
sumber
juga, cari komentar // yang mematahkan kurung kurawal penutup
if (1==1) { //echo "it is true"; }
kurung kurawal penutupan tidak akan menutup bagian kondisional dengan benar dan php tidak akan memproses sisa kode dengan benar.
sumber
Hindari ini juga
<? } ?>
pastikan Anda meletakkannya<?php } ?>
sumber
Saya melihat beberapa kesalahan, yang saya perbaiki di bawah ini.
Inilah yang saya dapatkan sebagai salah:
Inilah yang akan saya lakukan:
sumber
Dalam kasus saya pelakunya adalah satu-satunya
<?php
tag pembuka di baris terakhir file. Tampaknya itu berfungsi pada beberapa konfigurasi tanpa masalah tetapi menyebabkan masalah pada yang lain.sumber
Juga, hati-hati terhadap pengidentifikasi penutupan heredoc.
Contoh Tidak Valid:
Ini akan menghasilkan pengecualian yang menyerupai berikut ini:
di mana nomor 5 mungkin nomor baris terakhir dari file Anda.
Menurut manual php :
TLDR : Pengidentifikasi penutup TIDAK boleh diindentasi.
Contoh yang valid:
sumber
Juga, kasus lain di mana sulit dikenali adalah ketika Anda memiliki file hanya dengan fungsi, saya tahu itu bukan kasus penggunaan umum tetapi itu menjengkelkan dan harus menemukan kesalahan.
File di atas mengembalikan erro
Parse error: syntax error, unexpected end of file in
sementara di bawah tidak.sumber
Bagi saya, penyebab yang paling sering adalah karakter} yang dihilangkan, sehingga fungsi atau jika blok pernyataan tidak diakhiri. Saya memperbaikinya dengan menyisipkan karakter} setelah suntingan terakhir saya dan memindahkannya dari sana. Saya menggunakan editor yang dapat menemukan tanda kurung buka yang sesuai dengan braket penutup, sehingga fitur itu juga membantu (ini menemukan fungsi yang tidak dihentikan dengan benar).
Kita dapat berharap bahwa penerjemah dan kompiler bahasa suatu hari akan melakukan beberapa pekerjaan untuk menghasilkan pesan kesalahan yang lebih baik, karena sangat mudah untuk menghilangkan braket penutup.
Jika ini membantu siapa pun, silakan pilih jawabannya.
sumber
Anda tidak dapat membagi instruksi IF / ELSE menjadi dua blok terpisah. Jika Anda membutuhkan kode HTML untuk dicetak, gunakan gema .
sumber
Untuk melengkapi jawaban lain, bisa juga karena auto-minification skrip php Anda jika Anda menggunakan klien ftp seperti FileZilla. Pastikan jenis transfer diatur ke Biner dan bukan ASCII atau otomatis. ASCII atau tipe transfer otomatis dapat mengecilkan kode php Anda yang mengarah ke kesalahan ini.
sumber
Jika Anda menggunakan parse_ini_file ($ file) atau rutin merading file .ini, periksa apakah data Anda dikutip dalam file ini. Data yang tidak dikutip akan menyebabkan kesalahan ini. Ex; data1 = tes akan menyebabkan kesalahan, data1 = "test" tidak akan.
sumber
Dalam kasus saya, saya menyalin konten ke file lain dan kemudian menghapus file php dan membuat yang baru, menyalin konten lagi ke file yang sama, dan itu berhasil.
sumber