Apache nevrací php stránky parsované, ale jako holý text

StandaD

Ahoj, po kolegovi jsem "zdědil" "server" s obstarožní konfigurací bez jakékoli dokumentace.
Apache verze 1.3.34, PHP 4.4, Mysql 5.0.5.1 a mám problém s parsováním php stránek, které vrací Apache jako holý text.
Původní konfigurace, která ve starém umístění fungovala byla, že v rootu apache jsou stránky stranka.php.gz (s tímto jsem se nesetkal) a tyto byly validně parsovány. Na novém působišti (jiná síť) však apache nevrací ani stranka.php.gz, ani stranka.php. Nemohl by mi někdo pomoci, kde začít s úpravami, aby parsoval alespoň jednu z uvedených možností (preferoval bych tu php.gz)? V httpd.conf ani v jiném konfiguráku jsem nic relevantního nenašel. Díky


Fantomas

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #1 kdy: 11. 02. 2018, 11:56:47 »
Asi ti neloaduje libphp, nekde v konfu to bude. Ne vzdy je defaultne odkomentovany.

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #2 kdy: 11. 02. 2018, 12:23:08 »
Ahoj,
nepamatuju si to přesně, ale dle mého musíš mít nastavený mime-typ.

AddType application/x-httpd-php .php.gz

Samozřejmě zavedený php modul pokud to není staticky nakompilované uvnitř.
LoadModule php5_module modules/libphp5.so cca

Pak asi tedy DirectoryIndex index.php.gz

Ahoj, po kolegovi jsem "zdědil" "server" s obstarožní konfigurací bez jakékoli dokumentace.
Apache verze 1.3.34, PHP 4.4, Mysql 5.0.5.1 a mám problém s parsováním php stránek, které vrací Apache jako holý text.
Původní konfigurace, která ve starém umístění fungovala byla, že v rootu apache jsou stránky stranka.php.gz (s tímto jsem se nesetkal) a tyto byly validně parsovány. Na novém působišti (jiná síť) však apache nevrací ani stranka.php.gz, ani stranka.php. Nemohl by mi někdo pomoci, kde začít s úpravami, aby parsoval alespoň jednu z uvedených možností (preferoval bych tu php.gz)? V httpd.conf ani v jiném konfiguráku jsem nic relevantního nenašel. Díky
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

StandaD

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #3 kdy: 11. 02. 2018, 14:29:31 »
Ahoj, v httpd jsem měl

#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index.  Separate multiple entries with spaces.
#
<IfModule mod_dir.c>
    DirectoryIndex index.php index.phtml index.html index.htm index.shtml index.cgi
</IfModule>


a


    #
    # AddType allows you to tweak mime.types without actually editing
    # it, or to make certain files to be certain types.
    #
    # For example, the PHP 3.x module (not part of the Apache
    # distribution - see http://www.php.net) will typically use:
    #
    #AddType application/x-httpd-php3 .php3
    #AddType application/x-httpd-php3-source .phps
    #
    # And for PHP 4.x, use:
    #
    AddType application/x-httpd-php .php3
    AddType application/x-httpd-php .php4
    AddType application/x-httpd-php .phtml
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    AddType application/x-tar .tgz
    AddType image/bmp .bmp

    # hdml
    AddType text/x-hdml .hdml


Přidal jsem

AddType application/x-httpd-php .php.gz


Pokud spustím prohlížeč, vidím soubory, při kliknutí na php.gz  nebo jen php dostanu opět text, ne parsovaný kód. Ale jak jsem psal, na původním umístění to běželo, žádné změny jen v připojení sítě, myslím, že to bude někde v dalším nastavení (asi sítě?). V etc/apache/conf.d jsou soubory

pojmenovana_sit.local
obsah
<VirtualHost *:80>
    ServerName pojmenovana_sit.local
    ServerAlias www.pojmenovana_sit.local
    ErrorLog /var/log/apache/pojmenovana_sit.local-err.log
    CustomLog /var/log/apache/pojmenovana_sit.local.log common
    DocumentRoot /var/www/pojmenovana_sit/admin

    DirectoryIndex login.php index.php index.phtml
</VirtualHost>


default
obsah

<VirtualHost *:80>
    ServerName 192.168.0.100
    DocumentRoot /var/www
</VirtualHost>

php4
obsah

<IfModule mod_php4.c>
  AddType application/x-httpd-php .php .phtml .php3 .php4
  AddType application/x-httpd-php-source .phps
</IfModule>

pojmenovava_sit == název skutečného webu

IP v ServerName je jiná než je IP stroje, zkusil jsem ji změnit na skutečnou, jediná změna byla, že jsem po změně viděl adresář www (ale nic v něm), po vrácení na původní vidím opět kompletní výpis (zajímavé bylo, že restart apache nepomohl, musel jsem restartovat)





 




Kit

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #4 kdy: 11. 02. 2018, 14:50:15 »
Teď asi budu za blba, ale proč gzipuješ skripty v PHP? Tím přece prakticky žádné místo neušetříš, ale jen plýtváš výkonem na rozbalování.


StandaD

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #5 kdy: 11. 02. 2018, 15:13:47 »
Já ne, takto jsem to dostal   :D

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #6 kdy: 11. 02. 2018, 15:54:20 »
Tak asi vůbec nemáš ten PHP modul zavedenej, chyba sítě to být nemůže.
Princip je jednoduchý, podle mimetype apache pochopí co to je a rovnou to převezme interpret, pokud se to nestane vrací se pochopitelně holý text.

Problém tedy nemůže být nikde jinde a teď taková kontrolní otázka, ty soubory jsou fakt komprimované?
Možná by pomohlo prozkoumat mimetyp gzipu, protože takhle najednou jsem to nikdy neviděl a dle mého to vůbec nemůže fungovat.

Tipoval bych, že to zachytí a prostě odešle s tímhle typem v binární podobě jak to najde na disku do interpretu to vůbec nedorazí.

Určitě by ale bylo dobré se odrazit od toho, že obyčejný php soubor to spustí jak má, pak můžeš ten bastl ladit dál.

Snad jedině, že by to ještě hodil do modulu s gzipem rozbalil a pak to sežral interpret PHP (ale proč taková hrůza co?).
« Poslední změna: 11. 02. 2018, 16:01:42 od Jan Forman »
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

Pavouk106

  • *****
  • 2 395
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #7 kdy: 11. 02. 2018, 17:07:59 »
ale proč taková hrůza co?
Tuhle otázku si tu asi kladou všichni, kdo to čtou... Ale odpověď se nedozvíme, když to tak převzal...

StandaD

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #8 kdy: 12. 02. 2018, 19:48:55 »
Ahoj, po mnoha experimentech se mi podařilo toto

- i přes to, že httpd.conf obsahoval
   Include /etc/apache/modules.conf a tento soubor skutečně obsahoval nahrávání php modulu viz obsah

# Autogenerated file - do not edit!
# This file is maintained by the apache package.

# To update it, run the command:

#    /usr/sbin/apache-modconf apache
# Autogenerated file - do not edit!
# This file is maintained by the apache package.
# To update it, run the command:
#    /usr/sbin/apache-modconf apache
ClearModuleList
AddModule mod_so.c
AddModule mod_macro.c
LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so
LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so
LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so
LoadModule status_module /usr/lib/apache/1.3/mod_status.so
LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so
LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so
LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule access_module /usr/lib/apache/1.3/mod_access.so
LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so
LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so
LoadModule ssl_module /usr/lib/apache/1.3/mod_ssl.so
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so


jsem za něj přidal


LoadModule php4_module modules/libphp4.so

(apache při startu hlásí, že je již nahrán a že ho přeskakuje).

- rozbalil jsem všechny soubory, které měly php.gz do normálních php souborů, php.gz smazal a nahrál do původního umístění /var/www/adresar1/adresar2/
- vytvořil jsem info.php, který obsahuje phpinfo();
- v souboru /etc/apache/conf.d/default.php (viz nahoře) jsem přepsal u VirtualHostu na skutečnou IP stroje
- restartoval apache

- pustil prohlížeč v hostitelském systému (převedl jsem si server do virtuálu, abych neriskoval) a světe, ono to běželo!!!!

Radost byla ale předčasná, protože po uvaření kafe jsem se vrátil k prohlížeči, dal refresh a nic - 404. Pro mě nepochopitelná věc, opravdu tam byla jen IP stroje
Současný stav
 
-  pokud v Lynxu zadám localhost, jsem na správné straně, v úvodu aplikace (spuštěn na serveru - localhost)
-  pokud se však připojím z hostitelského systému, dostanu defaultní Apache stránku. Když chci jít na aplikaci, musím za
IP adresu doplnit 2 vnořené adresáře, něco jako toto
http://192.168.149.128/adresar1/adresar2/index.php


V /etc/apache/httpd.conf je jako root uveden /var/www, taktéž v /etc/apache/conf.d/default.conf (viz nahoře, IP jsem změnil, souhlasí se současnou adresou stroje).

Poradí někdo, jak systému uvést do stavu, když zadám IP, abych byl rovnou v rootu aplikace. Stačí uvést v uvedených souborech root adresář na /var/www/adresar1/adresar2 nebo ještě něco jiného, jak jsem již psal rozdíl mezi localhostem a externím přístupem?

Díky

j

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #9 kdy: 12. 02. 2018, 21:26:56 »
... vrací se pochopitelně holý text...
Coz je mimochodem dalsi chyba v konfiguraci, protoze tohle se na provoznim zeleze stat vubec nesmi. A to ani v pripade, ze to phpko z nejakyho duvodu nejede.

LoadModule php4_module modules/libphp4.so

Fakt php4??? V dobe kdy existuje php7 ? Apache 1.3 k tomu? ...

IP adresu doplnit 2 vnořené adresáře, něco jako toto
http://192.168.149.128/adresar1/adresar2/index.php
...
V /etc/apache/httpd.conf je jako root uveden /var/www, taktéž v /etc/apache/conf.d/default.conf (viz nahoře, IP jsem změnil, souhlasí se současnou adresou stroje).

Hele, doufam ze si jen hrajes a ze to nechces poustet na verejnou IP ...

zeby ....

/var/www/adresar1/adresar2/index.php

byla ta cesta kde je ten soubor?

On se totiz apache bydefault chova tak, ze v tom rootu (/var/www) se snazi najit neco na tema index.html  nebo trebas index.php. A pokud tam neni, tak ho nemuze najit. Da se to vyresit trebas takhle https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html ale otazka zni zda to je to co chces.

Jirsákova stará

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #10 kdy: 13. 02. 2018, 00:51:18 »
Kristova noho, vypni ten server...

Vaja

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #11 kdy: 13. 02. 2018, 08:46:07 »
Teď asi budu za blba, ale proč gzipuješ skripty v PHP? Tím přece prakticky žádné místo neušetříš, ale jen plýtváš výkonem na rozbalování.

Ukol znel jasne, nasadte gzip v apache abychom usetrili sitovy provoz. Nebyl cas cist dokumentaci a resit kde zipovat a kde ne, tak se ziply php-cka  8)

StandaD

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #12 kdy: 13. 02. 2018, 10:26:49 »
Ahoj, takže díky všem za rady, již to jede. Co se týče dotazů

- takto jsem to převzal, nevím o historii stroje vůbec nic (php.gz apod.)
- je mi jasné, že je to totálně zastaralé, ale skutečně to běželo na veřejné IP (i se zastaralým sw jako je PHP, Apache)
- snažím se zákazníka přesvědčit, aby byl maximálně umístěn do LAN a přístup byl k němu omezen jen z vnitřní sítě (z WAN do LAN mají VPN). Běží na tom jejich interní IS. Přepis aplikace bude asi nutností.


Za mě bych ho skutečně vypl   8)

Re:Apache nevrací php stránky parsované, ale jako holý text
« Odpověď #13 kdy: 13. 02. 2018, 20:16:04 »
snažím se zákazníka přesvědčit, aby byl maximálně umístěn do LAN a přístup byl k němu omezen jen z vnitřní sítě (z WAN do LAN mají VPN). Běží na tom jejich interní IS. Přepis aplikace bude asi nutností.

Myslím, že rizika jsou tak velká, že už je to za hranicí, kdy nesmíte zákazníka přesvědčovat, ale musíte odmítnout takovou práci dělat. Podle občanského zákoníku, § 2950 jste v pozici odborníka, a když se necháte ukecat na to, že to budete dělat, přejímáte odpovědnost. Já bych do toho nešel, můžete to šeredně odskákat. Pokud zákazník nemá rozum, pak bych mu nedůvěřoval ani v tom, že po Vás nebude žádat náhradu škody.