Zdarzyło się wam walczyć z tematem „nadmiarowe puste linie lub spacje psujące mi krew”? Na przykład takie po zakończeniu bloku php, w jednym z tysiąca plików WordPress, Drupal czy innej aplikacji? Mi się właśnie (kolejny raz) zdarzyło znaleźć w plikach coś takiego…

Może właśnie z tym walczycie? Może spacje i puste linie kryją się w waszej skórce albo motywie? Może w jakimś mały niepozornym pliczku, którego znalezienie zajmie wam godzinę czy dwie?

Dziś prosta sztuczka. Wymagany dostęp do wiersza poleceń serwera i zainstalowane polecenie pcregrep. Wpis piszę głównie dla siebie, ale kto wie, może komuś się przyda?

Zastrzeżenie – oprócz bloga elimu prowadzę też inne strony oraz jednoosobową działalność oferującą doradztwo i usługi IT – w tym tworzenie, rozbudowa, przebudowa i utrzymanie stron internetowych. Szczegóły na https://palikowski.eu.

Zatem, do rzeczy. Ustawiamy się w głównym katalogu naszego CMS i odpalamy takie oto polecenie:

pcregrep --buffer-size 1224096 -rMl '\?>[\s\n]+\z' *

Lub jeszcze lepiej

pcregrep --buffer-size 1224096 -rMl '\?>[\s\n]+\n\z' *

Przy odrobinie szczęścia i intuicji dostaniemy listę plików, w których występują spacje i puste linie (w drugim wypadku więcej niż jedna) za znacznikiem ?>. Po co to nam? Choćby po to, że bywają one powodem błędnego parsowania skłądni XML kanałów RSS naszego bloga. Mnie to spotkało właśnie teraz.

Zatem, jeśli podgląd źródła naszego kanału RSS (lub samej strony) wygląda tak (puste linie i dopiero potem znacznik <!DOCTYPE html>):

To znaczy, że gdzieś w plikach php waszej aplikacji ktoś zapomniał o zasadzie nie używania ?> na końcu pliku php. Zasada ta oszczędza sporo nerwów :).

Kiedy już namierzycie taki przypadek – u mnie zdarzył się akurat w wp-config.php ale widziałem też w functions.php w katalogu motywu – usuńcie znacznik ?> i zapiszcie zmiany. Podziękujecie przy okazji :). Pliki PHP możemy więc śmiało kończyć tak:

Biuletyn elimu

Wysyłany raz w miesiącu

Nie spamujemy! Zajrzyj do polityki prywatności po więcej informacji