Odstranění příkazů PHP a odstranění vestavěného překladače PHP 4D

Automaticky přeloženo z Deepl

Jazyk PHP hraje klíčovou roli při vývoji webových stránek a do verze 4D v12 byl zaveden proto, aby nabízel funkce, které nejsou v původním jazyce snadno dostupné, například funkce zip, hash nebo LDAP. Postupem času 4D začlenil mnoho těchto funkcí PHP do své základní funkcionality. V důsledku toho jsme se rozhodli odstranit vestavěný interpret jazyka PHP ve verzi 4D v20 R3 a zahájit proces odstraňování příkazů jazyka PHP ve verzi v21.

Přestože příkazy PHP ze systému 4D zcela neodstraníme, důrazně vám doporučujeme, abyste v budoucnu ke spouštění kódu PHP používali systémové pracovníky.

Tento příspěvek na blogu vás provede tímto procesem přechodu, ukáže vám, jak používat externí interpret prostřednictvím nástroje PHP Execute, a vysvětlí, jak efektivně spouštět kód PHP pomocí systémového pracovníka.

První krok: odstranění vestavěného interpretu PHP 4D

První změna proběhne ve verzi 4D v20 R3 odstraněním vestavěného interpretu PHP 4D. PHP Execute bude nadále fungovat, ale pouze s externím interpretem PHP. Pokud nemáte zkušenosti s používáním externího interpretu PHP, postupujte podle tohoto návodu.

Použití nástroje PHP Execute s externím interpretem PHP

Použití externího interpretu PHP vám umožní kdykoli aktualizovat na novější verze jazyka PHP a instalovat bezpečnostní záplaty, jakmile budou vydány. Umožňuje také používat více modulů PHP.

Vytvoření vlastního souboru php.ini

Soubor php.ini slouží k inicializaci interpretu PHP. Tento soubor byl automaticky vytvořen a použit při volání PHP Execute pomocí interního interpretu. V případě externího interpretu je třeba tento soubor vytvořit a předat ručně. Při jednorázovém volání PHP Execute se soubor vytvoří ve složce resources vašeho projektu: důrazně doporučujeme použít tento soubor pro inicializaci externího interpretu PHP a v případě potřeby jej upravit.

Spusťte verzi PHP CGI.

Existují dva způsoby spuštění PHP: Pomocí rozhraní příkazového řádku (CLI) nebo prostřednictvím rozhraní CGI (Common Gateway Interface). Nástroj PHP Execute používá společné rozhraní brány, takže je nutné spustit verzi PHP CGI.
Pro systém Windows si můžete PHP stáhnout na oficiálních webových stránkách PHP. Tato verze obsahuje jak verzi CLI, tak verzi CGI jazyka PHP.
V současné době verze na oficiálních webových stránkách ve výchozím nastavení nenačítá balíček mbstring. Chcete-li tak učinit, musíte do souboru php.ini přidat tyto řádky:

extension_dir = "./ext/"
extension=mbstring

Na Macu je to trochu složitější. Společnost Apple přestala dodávat systém macOS s nainstalovaným PHP (z podobných důvodů jsme ho přestali dodávat i my). Oficiální webové stránky PHP neposkytují předpřipravenou verzi pro Mac. Na některých stránkách můžete najít předpřipravené verze, ale obvykle nejsou udržované ani doporučené. Abychom vám usnadnili přechod, poskytuje společnost 4D na stránce pro stahování produktů svůj vestavěný program 4D v20 jako samostatnou binární verzi PHP. Všimněte si, že tato binární verze nebude společností 4D udržována. Pokud budete v budoucnu potřebovat aktualizovat PHP na Macu, budete si muset vytvořit vlastní. Podrobný postup, jak to udělat, uvedu později v tomto příspěvku na blogu.

PHP pak musíte spustit přes terminál vyvoláním tohoto příkazu uvnitř adresáře PHP:

php-cgi -b <adresa:port> -c <cesta_k_php.ini_souboru_vnitr_složky_projektu_zdroje>.

Nebo pokud používáte vestavěný PHP 4Dv20:


Nezapomeňte při zadávání cesty vypustit speciální znaky (jako \ a „) přidáním \ těsně před ně (\\ a \“).
Protože potřebujete spustit PHP na stejném počítači jako 4D, adresa musí být 127.0.0.1. Výchozí port PHP je 8002, což je také výchozí port, který používá 4D. Doporučujeme vám, abyste ke
spuštění a zastavení PHPpoužívali systémové pracovníky, abyste jej nemuseli spouštět ručně.

Pro spuštění PHP pomocí systémového pracovníka můžete například použít tento kód:

worker : 4D.SystemWorker
worker:=4D.SystemWorker.new("<cesta_k_php_cgi_spustitelnému> -b <adresa:port> -c <cesta_k_php.ini_souboru_vnitr_složky_projektu_zdroje>")

A později ukončete PHP pomocí:

worker.terminate()

Konfigurace nastavení 4D pro připojení k externímu PHP

Otevřete kartu PHP v nastavení struktury a zadejte IP adresu a port vašeho serveru PHP. Poté znovu otevřete svůj projekt.

Výchozí možnosti karty PHP v nastavení struktury.
Výchozí port PHP je 8002, a protože server PHP musí běžet na stejném počítači jako 4D, musíte použít adresu 127.0.0.1.

Volání PHP Execute

Nyní, když je server PHP spuštěn a 4D správně nakonfigurován, můžete použít PHP Execute se stejnou syntaxí, jakou jste používali v minulosti. Pokud používáte 4D v20 R3 nebo novější, nemusíte ve svém kódu nic měnit. Chcete-li použít výše vysvětlený koncept ve starších verzích, použijte SET DATABASE PARAMETER(PHP use an external interpreter;1) – což je nyní výchozí nastavení pro 4D. Všimněte si, že stejný příkaz umožňuje nastavit IP nebo port PHP pomocí kódu, pokud jej nechcete nastavovat přes rozhraní, jak je vysvětleno výše.


Druhý krok: Odstranění PHP Execute

Druhá změna, ke které dojde v 4D v21, je zastarání PHP Execute. Příkaz zůstane funkční a nemáme v úmyslu jej ze 4D odstranit. Pokud se v budoucnu rozhodnete ve své aplikaci používat PHP, důrazně doporučujeme používat ke spouštění kódu PHP systémové pracovníky.

Používání systémových pracovníků ke spouštění kódu PHP

Nainstalujte nebo sestavte systém PHP

V systému Windows si můžete PHP stáhnout z oficiálních webových stránek PHP.
V počítači Mac budete muset sestavit PHP jako vestavěný interpret PHP 4D, který je dodáván pouze s rychlou verzí CGI, zatímco budete potřebovat verzi PHP CLI. Podrobný postup uvedu později v tomto příspěvku na blogu.

Volání PHP pomocí systémových pracovníků.

Uvedu vám 2 příklady, jak spustit kód PHP pomocí systémových pracovníků.

První příklad interpretuje soubor PHP a získá výstup v proměnné $result.

var $worker : 4D.SystemWorker
var $result : Text

$worker:=4D.SystemWorker.new("<path_to_php_executable> -f <path_to_php_file> -c <path_to_php.ini_file_inside_the_project_resources_folder>")
$result:=$worker.wait().response

Druhý příklad spouští PHP jako interaktivní shell, takže jej můžeme požádat, aby přímo interpretoval nějaký kód PHP. Tento způsob spouštění kódu PHP je optimálnější, pokud musíte provést mnoho volání PHP, protože PHP spouštíte pouze jednou.

var $worker : 4D.SystemWorker
var data : Text

//Zpětné volání onData připojí výsledek provádění do proměnné data
var $options : Object
var $onData : 4D.Function
$onData:=Formula(data+=$2.data)
$options:=Nový objekt("onData"; $onData)

$worker:=4D.SystemWorker.new("<cesta_do_php_vykonatelného> -a -c <cesta_do_php.ini_file_inside_the_project_resources_folder>"; $options)
$worker.wait(1)
data:=""
$worker.postMessage("echo \"Hello World!\";\r\n")
$worker.wait(1)
$worker.terminate()

Výsledek provedení se načte do datové proměnné, v tomto případě Hello World!


Získání PHP na Macu

Nejjednodušším řešením pro načtení jazyka PHP na počítači Mac je použití nástroje Homebrew. Bohužel však získáte PHP pouze na svém počítači a nebudete jej moci distribuovat. Pokud chcete PHP distribuovat spolu s aplikací, musíte jej zkompilovat.

Použití nástroje Homebrew ke kompilaci PHP

Nainstalujte Homebrew

Balíček pro instalaci Homebrew najdete na GitHubu.

V opačném případě jej můžete nainstalovat prostřednictvím terminálu. Nejprve budete potřebovat nástroje Xcode. Vyvolejte tento příkaz pro jejich instalaci:

Instalace: xcode-select --install

Poté můžete nainstalovat Homebrew pomocí tohoto příkazu:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)".

Instalace PHP

PHP pak můžete nainstalovat tímto příkazem:

brew install php

Kompilace PHP na Macu

Pokud potřebujete distribuovat svou aplikaci 4D na Macu, budete potřebovat vestavěnou verzi PHP. Chcete-li ji vytvořit, musíte ji zkompilovat. Zde je uveden kompletní postup, jak to provést:

Instalace Homebrew

K instalaci Homebrew budete potřebovat nástroje Xcode. K jejich instalaci zavolejte tento příkaz:

xcode-select --install

Homebrew pak můžete nainstalovat tímto příkazem:

(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)": /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)".

Instalace obslužných programů

Ke kompilaci PHP budete potřebovat programy groff a pkg-config. Můžete je nainstalovat pomocí těchto příkazů:

brew install groff
brew install pkg-config

Zkompilujte knihovnu OpenLDAP

Stáhněte si knihovnu OpenLDAP.
Rozbalte obsah komprimovaného souboru:

tar -zxf <název_archivu>.

Proveďte konfiguraci pro instalaci:

./configure --prefix="<cesta_k_cílové_složce>" --disable-backends --enable-ldap --without-fetch --without-cyrus-sasl --enable-shared=no --enable-static=yes

Závislosti kompilace:

make depend

Zkompilujte knihovnu:

make

Nainstalujte do cílové složky:

make install

Zkompilujte knihovnu OpenSSL

Stáhněte knihovnu OpenSSL.
Rozbalte obsah komprimovaného souboru:

archivu: tar -zxf <název_archivu>

Nakonfigurujte pro instalaci:

./config --prefix="<cesta_k_cílové_složce>".

Zkompilujte knihovnu:

make

Nainstalujte do cílové složky:

make install

Zkompilujte PHP

Stáhněte PHP.
Rozbalte obsah komprimovaného souboru:

archivu: <název_archivu>.

Nakonfigurujte pro instalaci:

./configure --prefix="<cesta_k_cílovému_adresáři>" --disable-all --enable-cgi --enable-shared=no --enable-static=yes --with-openssl="<cesta_k_cílovému_adresáři_OpenSSL>" --with-ldap="<cesta_k_cílovému_adresáři_OpenLDAP>"." --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-mbstring --disable-mbregex --enable-sockets --with-sqlite3 --disable-posix --enable-ctype --enable-fileinfo --enable-filter --enable-pdo --with-pdo-sqlite --enable-phar --enable-session --enable-tokenizer --disable-opcache

Zkompilujte knihovnu:

make

Nainstalujte do cílové složky:

make install

V cílové složce PHP najdete jak rychlou CGI verzi PHP, tak CLI verzi PHP. Rychlou verzi CGI lze použít jako externí server PHP pomocí nástroje PHP Execute. Verzi CLI lze použít se systémovými pracovníky.

Pokud máte nějaké dotazy, použijte fórum

Chceme zajistit, aby váš přechod byl co nejhladší. Chápeme, že to může vyžadovat určité úsilí, a jsme zde, abychom vám pomohli na každém kroku. Neváhejte se obrátit na naše fórum s jakýmikoliv dotazy nebo připomínkami; rádi vám poskytneme odpovědi a rady.

Pokud se rozhodnete na fóru založit novou diskusi o PHP, nezapomeňte uvést značku „PHP„. Usnadníte tak všem vyhledání a zapojení do vašeho tématu.

Nicolas Brachfogel
• Product Owner & Senior Developer • Nicolas Brachfogel nastoupil do 4D v roce 2017 jako senior vývojář (4D server a sítě). Jako Product Owner, který řídí vydání Apple Silicon, má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací a také zajišťuje, aby implementace funkcí vyhovovaly potřebám zákazníků. Nicolas, absolvent Institut Supérieur d'Informatique Appliquée (INSIA), začal svou kariéru jako softwarový vývojář v roce 2001. Po několika letech kódování v Javě a C++ se specializoval na vývoj klient-server pro společnosti zabývající se videohrami. Jako serverový vývojář/architekt úspěšně pracoval na serverových architekturách mnoha her (Dofus Arena, Drakerz, Trivial Pursuit Go!).