PHP: syntax error, unexpected $end

Dla zdezorientowanych, w przypadku pojawienia się błędu o podobnej treści:

Parse error: syntax error, unexpected $end in /usr/home/test/application/views/v_main.php on line 1731

Najlepiej jest nie panikować.
Wiemy, że kod jest poprawny, wiemy, że błąd ten generowany jest gdy mamy niepełny kod i brakuje klamer zamykających.

Rozwiązanie:
edytujemy na serwerze plik php.ini i ustawiamy zmienną:

short_open_tag = On

i już.

mailto z button’a

Dzisiaj coś dla developerów HTML/JavaScript i języków webowych (np. JSP/ASP/PHP).
Może dla niektórych jest to prosta rzecz, aczkolwiek kilka dłuższych chwil zajęło mi rozwiązanie tego problemu, a mianowicie jak z button’a w HTMLu można utworzyć maila w stylu takim jak link mailto

a href=”mailto:info@smartlab.pl?subject=hello world&body=hello world again!” name=”link”

Sprawa okazuje się bardzo prosta i można to zrobić następująco

INPUT TYPE=”button” VALUE=”wyślij maila” onClick=”parent.location=’mailto:adres@domena.pl?subject=to jest tytuł maila&body=a to jest treść maila'”>

Wyjaśniając powyższy kod, należy w metodzie onClick użyć parent.location i przypisać temu to co chcieliśmy wywołać w href’ie.

Jak oswoić ZendOptimizer i ionCube?

Miałem wczoraj możliwość ustawienia ciekawego rozwiązania hashowania skryptów PHP – ionCube oraz ZendOptimizer .
Istotą sprawy było to, że wszystko miałem zainstalowane i dobrze ustawione w pliku php.ini z taką małą różnicą, że phpinfo(); jednak nie pokazywało odpowiednich informacji o tych ustawieniach, co – de facto – również nie działało.

Cóż więc jest nie tak?

Przejrzałem google w wzdłuż i wszerz i niestety nie znalazłem odpowiedzi na to pytanie. Znalazłem natomiast mnóstwo opisów dotyczących prawidłowej konfiguracji tzw. loaderów w pliku ustawień samego deskryptora PHP.

Przejrzałem jeszcze raz konfiguracje i manuale. Okazało się, że PHP nie może być skompilowane z opcją

–enable-debug

wpp. loadery nie ładują się.

Wobec tego ponownie skompilowałem PHP 5.2.0 na freeBSD 6.1 przy czym tym razem nie zaznaczałem opcji debug. Oczywiście należało również pwtórnie skompilować wszystkie używane moduły, gdyż te wcześniejsze były jakby przygotowane dla wspomnianego parametru debug.

Wynik tej akcji zobaczyłem w phpinfo():

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
with the ionCube PHP Loader v3.1.24, Copyright (c) 2002-2006, by ionCube Ltd., and
with Zend Optimizer v3.2.2, Copyright (c) 1998-2006, by Zend Technologies
with Zend Extension Manager v1.2.0, Copyright (c) 2003-2006, by Zend Technologies

SugarCRM i problem DateTime w PHP 5.2.0

Chcemy być „Up To Date”. Robimy aktualizację paczek na serwerach linux/unix. Okazuje się, iż najnowsza wersja PHP 5.2.0 posiada zmienioną nieco obsługę klasy DateTime, co idzie w parze pojawiającym się błędem np. w aplikacji Open Source Sugar CRM.

Fatal error: Cannot redeclare class DateTime in /home/www/sugarcrm/modules/Calendar/DateTime.php on line 29

Na szczęście na forum SugarCRM pojawiła się łatka o nazwie os_datetimefix.zip, umożliwiająca prawidłową obsługę tej klasy i jej podobnych wykorzystywanych w aplikacji.
Wystarczy ją rozpakować i odpowiednie pliki nadpisać w podkatalogach katalogu /modules/.
Nie zapomnijcie o kopii zapasowej plików oryginalnych!

Link do forum: http://www.sugarcrm.com/forums/showthread.php?t=16477&highlight=php+5.2.0+RC4+error

Powodzenia!