Apache s PHP: funkce echo nefunguje správně

Apache s PHP: funkce echo nefunguje správně
« kdy: 28. 09. 2022, 23:05:48 »
Nainstalil jsem si Fedoru s tím, že si budu hrát s Php, Apache na Linuxu. No po různém laborování se mi to povedlo rozjet, ale funguje to nějak zvláštně. První nejjednodušší script, co snad může existovat
Kód: [Vybrat]
<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Phpbastl</title>
    </head>
    <body>
        <?php
        
        
echo("Tak pojede to už sakra!");
        echo(
'<br />');
        echo(
"Nechce to jet!");
        
?>

    </body>
</html>

No a výsledek, co se zobrazí v prohlížeči, jako WTF...
http://imgway.cz/s/4Leb
« Poslední změna: 29. 09. 2022, 08:18:20 od Petr Krčmář »


RDa

  • *****
  • 1 997
    • Zobrazit profil
    • E-mail
Re:Apache, Php, Fedora - fce echo funguje divně
« Odpověď #1 kdy: 29. 09. 2022, 00:53:05 »
Zmackni CTRL+U nebo zvol View Source  ... jestli uvidis svuj skript tak jak je, je to problem toho, ze se to PHP nezpracovava v ramci Apache.

Problem muze byt chybejici konfigurace v httpd.conf a jeho includech, treba u me to je skrze:
Kód: [Vybrat]
/etc/apache2/modules.d/70_mod_php.conf:1:<IfDefine PHP>a
Kód: [Vybrat]
# cat /etc/conf.d/apache2 | grep PHP
APACHE2_OPTS="-D DEFAULT_VHOST -D LANGUAGE -D PHP -D SSL_DEFAULT_VHOST"

anebo jsi ten skript pojmenoval .html a mel byt .php

Re:Apache, Php, Fedora - fce echo funguje divně
« Odpověď #2 kdy: 29. 09. 2022, 01:20:30 »
Fedora ma php modul povoleny default.

Asi ten subor nema priponu php, ako pisal RDa.

Pre overenie ci ma httpd zavedeny php modul skuste:
Kód: [Vybrat]
cat /etc/httpd/conf.modules.d/20-php.conf
malo by tam byt:
Kód: [Vybrat]
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#

# Cannot load both php5, php7 and php modules
<IfModule !mod_php5.c>
  <IfModule !mod_php7.c>
    <IfModule prefork.c>
      LoadModule php_module modules/libphp.so
    </IfModule>
  </IfModule>
</IfModule>
(samotna konfiguracia php je v /etc/httpd/conf.d/php.conf).
ak ho tam nevidite, tak bud nemate php nainstalovane ako modul, ale ako fastcgi process manager - balik php-fpm, tam je konfiguracia trocha komplikovanejsia, pretoze httpd v tomto pripade funguje ako proxy.


Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #3 kdy: 29. 09. 2022, 10:24:42 »
1) pouzij nginx + php-fpm.
2) do budoucna nemixuj logiku (php) a vystup (html)
Děkuji za možnost editace příspěvku.

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #4 kdy: 29. 09. 2022, 12:08:05 »
1. Skus toto
Kód: [Vybrat]
<?php

phpinfo
( );

?>
ak to vypise phpinfo() a bla bla tak PHP nefunguje. Ak to loadne page s tabulkov chyba je inde.
2. nemixuj php a html nie je to dobra praktika
3. ak nevies doriesit apache + php sam stiahni si WAMP,XAMP hocico. (budes mat rovno vyriesene aj SQL connection). V cistom Apache to musis nastavit.
4. ta phpinfo page ty povie ako mas nastaveny system co je povolene a tak podobne.
« Poslední změna: 29. 09. 2022, 12:10:25 od Wangarad »


Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #5 kdy: 29. 09. 2022, 12:19:46 »
Naj idealnejsi sposob ako sa s tym nepatlat je pouzit kontajner, na fedore mas podman, hotovych image najdes tiez neurekom, navodov ako s tym pracovat tiez mnoho... usetris si tym kopu problemov s nastavovanim lampu, co je problem sam o sebe (rozne potreby pre rozne projekty) a ak ta zastavi takto trivialna zalezitost, tak  si bud isty ze skor ci neskor narazis na daleko specifickejsie problemy...

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #6 kdy: 29. 09. 2022, 19:04:15 »
Mea culpa. Rozhodne kontejnery.
Děkuji za možnost editace příspěvku.

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #7 kdy: 29. 09. 2022, 19:37:33 »
Děkuju za rady. Jsem začátečník ale zase si nemyslete, že jsem se nesnažil. Hrál jsem si s hodiny konfigurákem v etc httpd.cof, aspoň doufám, že je to ten správný, nastavoval práva souborům, složkám, hrál si s firewallem, aktivoval pomocí systemctl enable a nevim co ještě. Jel jsem hlavně podle tohoto: https://cs.linuxcapable.com/how-to-install-apache-httpd-on-fedora-35/ Ještě vyzkouším vaše rady. Určitě mám snahu. Děkuju moc. Jdou zkoušet dál. V podstatě mě to baví. Díky.

1. Skus toto
Kód: [Vybrat]
<?php

phpinfo
( );

?>
ak to vypise phpinfo() a bla bla tak PHP nefunguje. Ak to loadne page s tabulkov chyba je inde.
2. nemixuj php a html nie je to dobra praktika
3. ak nevies doriesit apache + php sam stiahni si WAMP,XAMP hocico. (budes mat rovno vyriesene aj SQL connection). V cistom Apache to musis nastavit.
4. ta phpinfo page ty povie ako mas nastaveny system co je povolene a tak podobne.

Zobrazí se prázdná stránka.

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #8 kdy: 29. 09. 2022, 20:22:50 »
Jel jsem hlavně podle tohoto: https://cs.linuxcapable.com/how-to-install-apache-httpd-on-fedora-35/
Tam je ale popsáno jen zprovoznění Apache, o PHP tam není nic.

S oprávněními souborů nebo firewallem to vůbec nesouvisí. Prostě tam jen nemáte zprovozněné PHP.

_Jenda

  • *****
  • 1 208
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #9 kdy: 29. 09. 2022, 22:54:26 »
Zobrazí se prázdná stránka.
Musíš se podívat co ti server doopravdy pošle - teď jsem si to zkusil ve Firefoxu a obsah mezi <?php a ?> nezobrazuje (předpokládám že to v tomto případě bere jako neznámý HTML tag). Takže minimálně Zobrazit zdrojový kód. Ještě lepší je to ale testovat třeba wgetem, protože ti rovnou vypíše všechny hlavičky, délku obsahu, návratový kód serveru (200, 404, 500) atd.:

Kód: [Vybrat]
wget -S -O - http://localhost/mojestranka.php
Někdo zase má pro změnu rád vývojářské nástroje které jdou otevřít ve webovém prohlížeči a tam je panel "Network" a různé další panely kde je vidět spousta věcí.

Kontejnery jsou fakt "super" nápad na tohle, za chvíli tady budeme řešit jak spravovat kontejnery, jak konfigurovat věci uvnitř kontejneru a jak před kontejnery postavit reverzní proxy (s HTTPS!) protože potřebuje jeden kontejner na PHP a druhý na, já nevím, Python s Djangem.

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #10 kdy: 29. 09. 2022, 23:34:39 »
asi by nebolo odveci zacat s tym ze si overite ci tam mate php spravne nainstalovane ako modul (spustit ako root):
Kód: [Vybrat]
httpd -D DUMP_MODULES | grep php

malo by to vypisat:
Kód: [Vybrat]
php_module (shared)

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #11 kdy: 29. 09. 2022, 23:40:53 »
Kontejnery jsou fakt "super" nápad na tohle, za chvíli tady budeme řešit jak spravovat kontejnery, jak konfigurovat věci uvnitř kontejneru a jak před kontejnery postavit reverzní proxy (s HTTPS!) protože potřebuje jeden kontejner na PHP a druhý na, já nevím, Python s Djangem.

No, pre patlalov v jednochlapovych firmachsu zbytocne. Inde odcenia replikovatelnost vdaka compose, take mne to fuguje, je v terajsej dobe uz na cezdrzku...

To ako tu pracovat s kontajnermi sa tu uz riesilo milion krat a je to stale lepsie ako mu cpat wget, hoci nemate ani len tusenia ci tam ma nainstalovane php (a apache v prefork mode), php-zts (a apache v event mode) ci php-fpm (a apache v proxy mode)...

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #12 kdy: 30. 09. 2022, 00:22:15 »
Bych zkusil to php nejdřív nainstalovat:
Kód: [Vybrat]
sudo dnf upgrade --refresh -y
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-36.rpm -y
sudo dnf module list php
sudo dnf module enable php:remi-8.1 -y
sudo dnf install php -y
php -m
php -v
sudo systemctl restart httpd

Tohle je pro fedoru takovej vycuc co google dal. Na debian based distribucich to je jednodušší. Možná tam něco chybí, bude asi potřeba poladit konfiguraci asi v /etc/php.ini
Gréta je nejlepší.

Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #13 kdy: 30. 09. 2022, 00:36:35 »
Bych zkusil to php nejdřív nainstalovat:
Kód: [Vybrat]
sudo dnf upgrade --refresh -y
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-36.rpm -y
sudo dnf module list php
sudo dnf module enable php:remi-8.1 -y
sudo dnf install php -y
php -m
php -v
sudo systemctl restart httpd

Tohle je pro fedoru takovej vycuc co google dal. Na debian based distribucich to je jednodušší. Možná tam něco chybí, bude asi potřeba poladit konfiguraci asi v /etc/php.ini

To bude fungovat len v pripade ze ten apache je prefork a ak to podla nejakeho navodu prepol do ineho mpm tak sa to nechyti, tam musi byt thread safe verzia (ktora je v remi len v pripade fpm)

_Jenda

  • *****
  • 1 208
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Apache s PHP: funkce echo nefunguje správně
« Odpověď #14 kdy: 30. 09. 2022, 00:54:54 »
To ako tu pracovat s kontajnermi sa tu uz riesilo milion krat a je to stale lepsie ako mu cpat wget
Jako že když bude ladit kontejner tak nebude potřebovat řešit „browser mi zobrazil prázdnou stránku a myslím si že je prázdná protože nevím jak fungují HTML tagy“ nebo „nastavil jsem si reverzní proxy aby mi to fungovalo se dvěma kontejnery a teď mi to blbě posílá HTTP hlavičky, potřebuju si je něčím snadno zobrazit“.

(omlouvám se že nedokážu pomoci přímo s jádrem problému, ale používám jiné technologie - Debian a lighttpd - a tam se to dělá takto:
Kód: [Vybrat]
apt-get install lighttpd php-cgi
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php
systemctl restart lighttpd
přesný ekvivalent na Fedoře pochopitelně napsat nedokážu, ale obecně je potřeba nainstalovat balíček s příslušným PHP a modulem buď CGI nebo mod-php a následně ho zapnout)