Autor Zpráva
iiic
Profil
Viděli jste někdo něco takovéhoto:

include 'a.php'; // includuje se
include '../a.php'; // selže (přitom soubor existuje)

následně změna:

include __DIR__.'/../a.php'; // includuje se
include 'a.php'; // includuje se
include '../a.php'; // includuje se

vážně tomu nerozumím... celý server se chová divně. Proč bez toho prvního příkazu v druhé ukázce kódu ten poslední příkaz neudělá nic... ani žádná chyba, prostě se nic nestane.
Micruss
Profil
záleží jak to includuješ

když třeba budeš soubor v kořenovým adresáři a budeš includovat soubor v nějaké složce např. složka include
include 'include/a.php';

a v tom souboru co includuješ musíš zadat stejný cesty jako kdyby byly v tom základním

<? 
// soubor a.php
include 'include/dalsislozka/dalsisoubor.php';
?>
snad jsi to pochopil ;)
iiic
Profil
Já to taky nenapsal nejlépe… měl jsem asi použít a, b, c.
Totiž pokaždé jde o stejné soubory volané ze stejného místa. Jediná změna je to include __DIR__.'/../a.php'; což překvapivě změní výsledek posledního příkazu ( include '../a.php'; ) . Nenapadlo by mě, že ty includy (když obsahují jen echo) se nějak vzájemně ovlivňují.
Tori
Profil
Před tím selhávajícím includem vrátí getcwd správný adresář (tj. totéž co __DIR__)? (a zkoušíte to na windows nebo linuxu?)
iiic
Profil
Už jsem to 'tak trochu' vyřešil… pomocí realpath() jsem se díval na ty cesty a zjistil jsem, že jeden z adresářů je prostě jaksi nedostupný pro php. Pomohlo ho smazat a vytvořit znovu.
Nechápu ale jak je vůbec něco takového možné. Šlo o CentOS a adresář měl před smazání stejná práva i vlastníka jako po jeho novém vytvoření. Nebo je v linuxu ještě nějaký parametr, co ten adresář může charakterizovat? Žádný .htacces, co by problémy dělal tam taky nebyl.

Problém už tímto není, ale pokud by mi to někdo pomohl pochopit, byl bych moc rád.
Virtus
Profil
Můj tip je, že adresář byl zamknutý nějakým programem, pak se mohlo stát, že daný program spadnul nebo se špatně ukončil a už "nestih" adresář odemknout. Laicky řečeno si to můžete představit jako záchodovou kabinku ( = váš adresář ) do který vejde člověk ( = neznámý program ), který se uvnitř zamkne ( = udělá jí nepřístupnou ), bohužel člověk se uvnitř spláchnul a kabinka zůstala zavřená, dokud nepřijel borec s buldozerem ( = iiic ), kabinku zbořil ( = smazal ) a postavil novou odemknutou. :) Všimněte si, že kabinka má stejná práva jak před zbořením tak i poté co byla postavena nová, v linuxu by to bylo asi 0777. Ale přesto, když dovnitř někdo vleze, a zamkne se tam, ostatní, ikdyž na ní taky mají právo, tam přesto nemůžou :)
iiic
Profil
@Virtus Detailní vysvětlení, díky XD.

Ono možné je všechno, server byl nový, ale instalace přes composer a git nemusí být stále asi úplně nejspolehlivější. Že by to tam někde umřelo… nevím. Je vlastně nějaký příkaz na reset celého virtual serveru? pomohlo by to?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: