Portál AbcLinuxu, 15. května 2025 05:48
500 Internal Server Error
.
Apache v error logu píše toto:
PHP Warning: include(admin/inc/common.php): failed to open stream: Permission denied in /var/www/html/GetSimpleCMS-3.3.13/index.php on line 44, referer: http://localhost/ PHP Warning: include(): Failed opening 'admin/inc/common.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear:') in /var/www/html/GetSimpleCMS-3.3.13/index.php on line 44, referer: http://localhost/ PHP Fatal error: Call to undefined function exec_action() in /var/www/html/GetSimpleCMS-3.3.13/index.php on line 47, referer: http://localhost/S PHP nemám žádné zkušenosti, takže na základě toho výpisu chyb nedokážu zjednat nápravu. Sice to na první pohled vypadá, že jsou nějaké problémy s přístupovými právy nebo cestami k souborům, ale co konkrétně to znamená, stejně nevím. Děkuji za pomoc. (Nevím, zda to k něčemu bude, ale pro úplnost - PHP mám nainstalované ve verzi 7.0.12.)
/var/www/html/admin/inc/common.php
. Podle chybového hlášení tam chybí.
I ten index by měl být asi jinde - v /var/www/html/index.php
failed to open stream: Permission deniedNechybi jen ma zle nastavena prava..
Pod jakým uživatelem a skupinou běží Apache? Řekněme, že http
. Co třeba zkusit:
chgrp -R http /var/www/html chmod -R u=rwX,g=rX,o= /var/www/html chmod go+X /var{,/www}
Pozor také na symlinky; nastavení SymLinksIfOwnerMatch
v Apache může vyžadovat chgrp -h http symlink
, aby Apache následoval symlink; obecně jde o to, aby měl symlink stejného vlastníka i skupinu jako soubor nebo adresář, na který ukazuje.
chmod: neplatná práva: „u=rwX,“
.
Pokud jde o ty soubory index.php a common.php, ty se nacházejí v /var/www/html/GetSimpleCMS-3.3.13/index.php a v /var/www/html/GetSimpleCMS-3.3.13/admin/inc/common.php. Nějak nerozumím tomu, proč je PHP chce hledat v /usr/share/php/ (který mimochodem u mě neexistuje) nebo v /usr/share/pear/ (totéž, neexistuje), když jde o soubory distribuované s oním redakčním systémem, nikoli systémové soubory.
Jo, www-data
bude ta správná skupina. Proces pod rootem tam je asi jenom proto, aby směl otvírat privilegované porty (443, 80 atp.) a pak forknout ty ostatní.
Navržené příkazy jsem zkusil, i když jim plně nerozumím…
Co takhle manuálové stránky?
U druhého vyskočilo hlášení chmod: neplatná práva: „u=rwX,“.
To hlášení říká celkem jasně, kde je problém. Navrhoval jsem práva u=rwX,g=rX,o=
a nikoliv u=rwX,
s čárkou na konci.
Nějak nerozumím tomu, proč je PHP chce hledat v /usr/share/php/…
Možná je potřeba potunit něco v konfiguraci php.ini
. Kromě toho, pokud si vzpomínám, na některých implicitních Apache konfiguracích byla interpretace PHP vypnutá a musel se odkomentovat kus konfigurace v httpd.conf
(nebo případně v některém z dalších konfiguráků Apache), jinak to dělalo podivnosti.
…potunit něco v konfiguraci php.ini…
To něco může být include_path
a open_basedir
, jak se teď dívám. Obojí jsou nastavení v php.ini
. Nebo se taky dají potunit zdrojáky toho redakčního systému, když na to přijde; cokoliv je jednodušší/rozumnější. Viz například starý dobrý/špatný Drupal a jeho proměnná DRUPAL_ROOT
.
(Podle původní chybové hlášky to vypadá, že interpretace PHP je povolená, takže v httpd.conf
ani v php7_module.conf
se (snad) vrtat nemusí.)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.