Wystąpił błąd:
Parse error: syntax error, unexpected end of file in the line
Za pomocą tego kodu:
<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>
Jaki jest problem?
php
html
parse-error
pratnala
źródło
źródło
short_tags
w swoim php.ini w OBUapache
icli
konfiguracjachOdpowiedzi:
Powinieneś tego unikać (na końcu swojego kodu):
i to:
Nie powinieneś umieszczać nawiasów bezpośrednio blisko
php
tagu otwórz / zamknij , ale oddziel go spacją:także unikaj
<?
i używaj<?php
źródło
<? } ?>
zamiast<?php } ?>
.Miałem ten sam błąd, ale naprawiłem go, modyfikując
php.ini
plik.Znajdź swój plik php.ini, zobacz Koleś, gdzie jest moje php.ini?
następnie otwórz go w swoim ulubionym edytorze.
Poszukaj
short_open_tag
właściwości i zastosuj następującą zmianę:źródło
<? ?>
(uwaga, brakphp
). Mam za zadanie dodawać lub zmieniać funkcje i zazwyczaj nie jest dobrym pomysłem po prostu zmieniać wszystko tylko dla jednej lub dwóch funkcji. Twoja odpowiedź naprawdę pomogła.Istnieją dwie różne metody obejścia składni błędu analizy.
Metoda 1 (Twój plik PHP)
Unikaj w swoim pliku PHP tego:
Upewnij się, że umieściłeś to w ten sposób
Metoda 2 (plik php.ini)
Istnieje również prosty sposób rozwiązania problemu. Wyszukaj
short_open_tag
wartość właściwości (użyj w edytorze tekstu zCtrl + F
!) I zastosuj następującą zmianę:do
Zgodnie z opisem podstawowych dyrektyw php.ini ,
short_open_tag
pozwala na użycie krótkiego otwartego znacznika (<?
), chociaż może to powodować problemy, gdy jest używane z xml (<?xml
nie będzie działać, gdy jest włączone)!źródło
Po prostu przejdź do php.ini, a następnie znajdź
short_open_tag= Off
ustawienieshort_open_tag= On
źródło
Poszukaj wszelkich pętli lub instrukcji, które nie są zamknięte.
Wpadłem w ten problem, kiedy zostawiłem plik php foreach: tag niezamknięty.
Zamknięcie go za pomocą następującego rozwiązania rozwiązało błąd składniowy:
unexpected end of file
Mam nadzieję, że to komuś pomoże
źródło
Sprawdź, czy zamknąłeś swoje zajęcia.
Na przykład, jeśli masz klasę kontrolera z metodami i przypadkowo usuniesz ostatni nawias zamykający całą klasę, otrzymasz ten błąd.
źródło
poszukaj również komentarza, // który łamie zamykający nawias klamrowy
if (1==1) { //echo "it is true"; }
zamykający nawias klamrowy nie zamknie poprawnie sekcji warunkowej, a php nie przetworzy poprawnie pozostałej części kodu.
źródło
Unikaj tego również
<? } ?>
upewnij się, że umieściłeś<?php } ?>
źródło
Widziałem błędy, które poprawiłem poniżej.
Oto, co otrzymałem jako błędne:
Oto jak bym to zrobił:
źródło
W moim przypadku winowajcą był samotny otwierający
<?php
tag w ostatniej linii pliku. Najwyraźniej działa w niektórych konfiguracjach bez żadnych problemów, ale powoduje problemy w innych.źródło
Uważaj też na identyfikatory zamykające heredoc.
Nieprawidłowy przykład:
Spowoduje to zgłoszenie wyjątku podobnego do następującego:
gdzie numer 5 może być numerem ostatniej linii twojego pliku.
Zgodnie z instrukcją php :
TLDR : identyfikatory zamknięcia NIE powinny być wcięte.
Prawidłowy przykład:
źródło
Innym przypadkiem, w którym trudno go zauważyć, jest plik zawierający tylko funkcję, wiem, że nie jest to typowy przypadek użycia, ale jest denerwujący i musiał wykryć błąd.
Plik powyżej zwraca błąd,
Parse error: syntax error, unexpected end of file in
podczas gdy poniższy nie.źródło
Dla mnie najczęstszą przyczyną jest pominięty znak}, dzięki czemu funkcja lub blok instrukcji nie są przerywane. Naprawiam to, wstawiając znak} po moich ostatnich edycjach i przenosząc go stamtąd. Używam edytora, który może zlokalizować nawiasy otwierające odpowiadające nawiasom zamykającym, więc ta funkcja również pomaga (lokalizuje funkcję, która nie została poprawnie zakończona).
Możemy mieć nadzieję, że pewnego dnia interpretery i kompilatory języków wykonają jakąś pracę, aby wygenerować lepsze komunikaty o błędach, ponieważ tak łatwo jest pominąć nawias zamykający.
Jeśli to komuś pomoże, zagłosuj na odpowiedź.
źródło
Nie możesz podzielić instrukcji IF / ELSE na dwa oddzielne bloki. Jeśli potrzebujesz wydrukować kod HTML, użyj echo .
źródło
Aby uzupełnić inne odpowiedzi, może to być również spowodowane automatyczną minifikacją skryptu php, jeśli używasz klienta ftp, takiego jak FileZilla. Upewnij się, że typ transferu jest ustawiony na Binary, a nie ASCII lub auto. Typ ASCII lub transfer automatyczny może zminimalizować kod php, prowadząc do tego błędu.
źródło
Jeśli używasz parse_ini_file ($ file) lub procedura raduje plik .ini, sprawdź, czy dane są cytowane w pliku ini. Brak cytowania danych spowoduje ten błąd. Dawny; data1 = test spowoduje błąd, data1 = "test" nie.
źródło
W moim przypadku skopiowałem zawartość do innego pliku, a następnie usunąłem plik php i utworzyłem nowy, skopiowałem zawartość ponownie do tego samego pliku i zadziałało.
źródło