Autor | Zpráva | ||
---|---|---|---|
xlifer Profil |
Potřebuji jednoduše spravovatelné prostředí na tvorbu webů, kde budu mít možnost přepínat verze PHP, zřizovat virtual hosty, atd. Padl mi do oka nástroj MAMP, ale asi bude potřeba placená verze Pro. Za cenu 49 USD, což není zase tak strašná suma za něco co výrazně usnadní práci. Nicméně by mě zajímal váš názor a případné zkušenosti s placenou verzi MAMP, zda opravdu funguje dobře a splňuje funkčnost, kterou slibují. Aktuálně používám XAMPP, není s tím žádný problém, ale neumožňuje přepínat verze PHP a další věci, které nabízí právě MAMP Pro. Jasně, v XAMPPu jde řešit ručně přepisováním configu, ale to je otravné a nepohodlné. Děkuji za vaše názory a případné doporučení.
|
||
Keeehi Profil |
#2 · Zasláno: 18. 1. 2018, 17:42:28
Na co potřebuješ přepínat verze? Jestli kvůli otestování funkčnosti, tak na to jsou lepší věci.
|
||
xlifer Profil |
#3 · Zasláno: 18. 1. 2018, 18:03:35
Protože v některých projektech jsou funkce PHP, která jsou již v nových verzích zrušené, např. mysql_connect, apod. Vím, že jsou to starodávné funkce, které už nikdo nepoužívá, ale bohužel takové projekty stále běží na serverech a když si chci takový web spustit lokálně, tak potřebuji pro starší projekty podporu dané verze PHP, např. 5.3. Jasně, skripty se dají přepsat a nahradit mysql_connect, mysql_query, ale to neřešme, zkrátka přepnu verzi a beží to jako na serveru, jak to bylo kdysi napsané, to je co řeším.
|
||
M4n Profil * |
#4 · Zasláno: 19. 1. 2018, 12:09:33
Rozhodni se sám. Pokud jde o odlišné verze PHP, tak to je otázka přidání jednoho řádku do konfigurace virtualhostu.
|
||
xlifer Profil |
#5 · Zasláno: 19. 1. 2018, 20:19:12
M4n:
Ano, jde mi pouze o odlišené verze PHP. Pokud by to takto fungovalo, tak by to bylo skvělé. A můžeš mě odkázat na nějaký konkretní příklad? Protože já jsem našel tedy celkem složité postupy a rozhodně nešlo o změnu jednoho řádku ve virtualhostu. |
||
Keeehi Profil |
Záleží, co si nastavíš jako program pro zpracování. Já používám nginx jako server a tam celá konfigurace týkající se php vypadá takto:
location ~ \.php$ { include /etc/nginx/snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.1-fpm.sock; break; } Pro apache to bude nejspíše vypadat takto: <FilesMatch \.php$> SetHandler proxy:unix:/run/php/php7.1-fpm.sock </FilesMatch> Taky vůbec nepíšeš, pro jaký operační systém problém řešíš. XAMPP i MAMP mohou běžet jak na Windows tak na macOS. Základní myšlenka je ale stejná. Nainstaluješ více verzí php a v konfiguraci apache budeš přepínat, které verzi PHP se má požadavek předávat. Navíc FilesMatch s SetHandler můžeš mít v konfiguracích virtualhostů, takže ti může běžet vedle sebe více PHP procesů a jednotlivé projekty se budou posílat na správnou verzi, podle toho, co zrovna budou mít uvedeno v konfiguraci svého virtualhostu. |
||
xlifer Profil |
Keeehi:
Reším to na OS Windows, což XAMPP i nově MAMP jsou dostupné pro Windows. Našel jsem tento návod: www.kutac.cz/blog/weby-a-vse-okolo/vice-verzi-php-pod-jednim-apache-serverem Kde postupem vychází s instalace XAMPPu a pro použití více rozdílných verzí se musí tedy přejít na FastCGI? Takže jsem od změny jednoho řádku, trochu jinde. A pokud bych chtěl jít historicky ještě pod verzi PHP 5.5, tak není podporován Apache 2.4, ale pouze 2.3, 2.2 a nižší, což ale neumí řešit ani MAMP Pro. Takže pokud se odrazím od instalace XAMPPu s verzí PHP 7.2.1, tak se mi asi stejně nepodaří rozběhnout např. PHP 5.2.17? |
||
Keeehi Profil |
#8 · Zasláno: 20. 1. 2018, 01:54:30
xlifer:
„Takže jsem od změny jednoho řádku, trochu jinde.“ Tak při instalaci to dá samozřejmě více práce. Samotné měnění verzí už je pak ale jednoduché. Jinak ten článek je přesně o tom co jsem měl na mysli. „A pokud bych chtěl jít historicky ještě pod verzi PHP 5.5, tak není podporován Apache 2.4“ Nedaří se mi nikde takovou informaci najít. „Takže pokud se odrazím od instalace XAMPPu s verzí PHP 7.2.1, tak se mi asi stejně nepodaří rozběhnout např. PHP 5.2.17?“ Kód co funguje na 5.2.17 by měl fungovat i na verzi 5.6. Nové verze PHP, které však nemění major verzi (první číslo) by měly být zpětně kompatibilní. Jediné, v čem by se měly lišit je Deprecated chybová hláška, která upozorňuje na to, že daná funkcionalita bude v nové major verzi odstraněna. Tento typ hlášek se dá ale v konfiguraci PHP potlačit a pak by se kód měl chovat stejně jak na 5.2 tak i na 5.6. Pokud ti tedy jde jen o spouštění aplikací, pak v důsledku by ti mělo stačit mít jen dvě nejnovější verze. Jednu 5 a druhou 7. |
||
xlifer Profil |
#9 · Zasláno: 21. 1. 2018, 17:45:56
Keeehi:
Děkuji za info a ještě bych se chtěl zeptat, v čem je podle tebe lepší, resp. proč jsi si vybral právě Nginx namísto XAMPPu, MAMPu a podobných? Mě ješte mile překvapil AMPPS, který jsem teď zkoušel, je zdarma a má pěkné možnosti nastavení, je tedy velmi blízkou alternativnou MAMP Pro. |
||
Keeehi Profil |
#10 · Zasláno: 21. 1. 2018, 19:24:51
xlifer:
To o čem píšeš, (XAMPP, MAMP, AMPPS) nepatří do samé skupiny jako Nginx. To tvoje jsou "programy" které ti nainstalují balíček programů. Počáteční písmena těchto programů pak vytváří název toho balíčku programů. Oproti tomu Nginx je jen obyčejný HTTP server. V případě těch balíčků je HTTP serverem Apache. Takže porovnávat se dá Apache a Nginx. A proč používám Nginx? Mám stejné prostředí jako používáme na produkci. Na lokální vývoj je ale asi uplně jedno, zda máš na počítači Apache nebo Nginx. |
||
M4n Profil * |
#11 · Zasláno: 21. 1. 2018, 20:20:26
xlifer:
„pro použití více rozdílných verzí se musí tedy přejít na FastCGI?“ Nebo jen na obyčejné CGI. Na testovacím serveru to nebude vadit, navíc všechny ty verze PHP zbytečně nepoběží na pozadí. V konfiguraci Apache je to pak už jen otázka definování CGI akce pro určitý MIME typ v daném virtual-hostu. Action application/x-httpd-php /local-bin/php70-cgi |
||
xlifer Profil |
#12 · Zasláno: 21. 1. 2018, 22:36:31
Keeehi:
Děkuji za upřesnění. Po přečtení všech dostupných informací a diskuzí o Nginxu jsem měl dojem, že je to něco, co začíná být teď poslední dobou stále více "in" a budoucnost Apache je na ústupu, ale asi to tak úplně nebude. Navíc v případě, že projekty využívají "oblíbený" htaccess, tak je Nginx nepoužitelný, resp. musí se htaccess přepsat do pravidel Nginxu, existuje už i nějaký konvertor na převod htaccess do pravidel Nginxu, ale stejně spousta věcí z původního htaccessu nebude fungovat, musí se řešit jinak. Zkrátka to není pouze rozchodit Nginx a nahrát tam projekt (jak jsem si původně myslel), který běžel na Apache. Ještě by mě zajímalo, jak se řeší na Nginxu více projektů, když na Apache serveru může mít každý svůj htaccess, který pohodlně nahraji do složky projektu. V Nginxu to asi pravděpodobně musí být pro všechny projekty v jednom conf souboru Nginxu, což není úplně přehledné, ale to teď pouze tipuji, protože Nginx neznám. |
||
Keeehi Profil |
#13 · Zasláno: 22. 1. 2018, 03:46:01
xlifer:
Ano, htaccess je oblíbený, protože se hodí začátečníkům a na webhostingy. To jsou takové ty případy minivěcí, kde je to strašně pohodlné. Trochu tím trpí výkon, protože apache pak musí pro každý požadavek projít několik adresářů a podívat se, jestli tam náhodou není htaccess a pokud je, tak ho musí i zpracovat. Když si vezmeš, že jedno načtení stránky v průměru pošle tak desítky požadavků na server, tak se to už lehce nastřádá. Tohle všechno nginx dělat nemusí. Nejen kvůli tomu je považován za výkonnější. Což je to, co firmy zajímá. A že to nemůže mít konfigurační soubor v každé složce? U firem to je jedno. Stejně mají většinou jen jeden projekt na jednom serveru. Ty větší mají farmu serverů a člověka (či tým) co se o ty servery stará a tak. A ti by určitě nebyli šťastní z konfigruačních souborů, které by se jim mohli objevit kdekoli v projektu. Jak už jsem psal, mně osobně nejde o výkon, já ho mám kvůli tomu, že ho máme v práci a proto, že jsem se s ním chtěl naučit pracovat. To že nemám htaccess mi vůbec nevadí. To, proč ho lidi potřebují jsou v 99 % případů hezké adresy. No a jelikož to všechny projekty prakticky vždy dělají stejně (pokud je požadavek na reálný soubor, tak ho vrať, pokud takový soubor neexistuje, podstrč index.php) tak nebylo problém nakonfigurovat nginx obecně pro všechny moje projekty. Dokonce mi to konfiguraci i usnadnilo. U apache jsem musel pro každý projekt vždy vytvořit virtualhost. V konfiguraci nginx se dají používat proměnné, takže mi stačí jeden univerzální virtualhost, který podle url mění cestu k projektu. Když tedy vytvořím nový projekt, nemusím nikde nic měnit, ani nic přidávat. |
||
xlifer Profil |
#14 · Zasláno: 22. 1. 2018, 11:45:26
Keeehi:
Rozumím, souhlasím a rád bych také začal používat Nginx. Je pravda, že Apache používám (a určitě ne jenom já) hlavně proto, že tam mám projekty, které mají nastavené htaccessy hlavně kvůli hezkým URL adresám. Pokud lze nastavit v Nginx pravidlo jak píšeš "pokud je požadavek na reálný soubor, tak ho vrať, pokud takový soubor neexistuje, podstrč index.php", tak pak bych s tím neměl problém, protože hezké URL řeším (rozeberu) pak už přímo v PHP. Můžeš mě prosím ukázat jak takové pravidlo do Nginxu napsat? |
||
Keeehi Profil |
#15 · Zasláno: 22. 1. 2018, 14:04:05
Tady máš celou konfiguraci ("virtualhostu") co používám. Ono to není úplně jedno pravidlo, ale je to snad myslím pochopitelné. To testování na existenci dělají řádky try_files.
server { listen 127.0.0.1:80; server_name ~(?<domain>[^.]+)\.my$; root /var/www/projects/$domain; index index.php index.html; # Deny hidden files. location ~ /\. { deny all; break; } # Hide this files from users. location ~* .*\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$ { return 304; break; } location ~* .*\.(avi|mkv|scss|css|js|htc|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|otf|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ { tcp_nodelay off; access_log off; log_not_found off; expires 14d; # This is cool because no php is touched for static content try_files $uri @rewrite; } location / { # This is cool because no php is touched for static content try_files $uri $uri/ @rewrite; } location @rewrite { # Some modules enforce no slash (/) at the end of the URL # Else this rewrite block wouldn't be needed (GlobalRedirect) rewrite ^/(.*)$ /index.php?q=$1; } location ~ \.php$ { include /etc/nginx/snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.1-fpm.sock; break; } } /etc/nginx/snippets/fastcgi-php.conf # regex to split $uri to $fastcgi_script_name and $fastcgi_path #fastcgi_split_path_info ^(.+\.php)(/.+)$; # # Check that the PHP script exists before passing it #try_files $fastcgi_script_name =404; # # Bypass the fact that try_files resets $fastcgi_path_info # see: http://trac.nginx.org/nginx/ticket/321 #set $path_info $fastcgi_path_info; #fastcgi_param PATH_INFO $path_info; # #fastcgi_index index.php; #include fastcgi.conf; include php-fpm-params.inc; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; fastcgi_intercept_errors on; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; #fastcgi_pass 127.0.0.1:9000; /etc/nginx/php-fpm-params.inc #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param QUERY_STRING $query_string; #fastcgi_param REQUEST_METHOD $request_method; #fastcgi_param CONTENT_TYPE $content_type; #fastcgi_param CONTENT_LENGTH $content_length; # #fastcgi_param SCRIPT_NAME $fastcgi_script_name; #fastcgi_param REQUEST_URI $request_uri; #fastcgi_param DOCUMENT_URI $document_uri; #fastcgi_param DOCUMENT_ROOT $document_root; #fastcgi_param SERVER_PROTOCOL $server_protocol; #fastcgi_param REQUEST_SCHEME $scheme; #fastcgi_param HTTPS $https if_not_empty; # #fastcgi_param GATEWAY_INTERFACE CGI/1.1; #fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; # #fastcgi_param REMOTE_ADDR $remote_addr; #fastcgi_param REMOTE_PORT $remote_port; #fastcgi_param SERVER_ADDR $server_addr; #fastcgi_param SERVER_PORT $server_port; #fastcgi_param SERVER_NAME $server_name; # # PHP only, required if PHP was built with --enable-force-cgi-redirect #fastcgi_param REDIRECT_STATUS 200; fastcgi_param HTTP_COOKIE "${http_x_cookie}; ${http_cookie}"; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param SERVER_PORT 80; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; |
||
xlifer Profil |
#16 · Zasláno: 23. 1. 2018, 22:15:43
Keeehi:
Moc díky. Pokusím se tím nějak prokousat... |
||
Časová prodleva: 7 let
|
0