Autor Zpráva
Pavel Kr.
Profil *
Používám normálně funkci file_put_contents("soubor.txt","ahoj")
na localhostu nebo na hostingu od wedosu normálně nahraje soubor do složky kde skript spustím.

Na serveru mám povolené file_uploads, ale nenahraje nic. Nevíte kde by mohl být zakopaný pes?

Díky.
juriad
Profil
Ukázal jsi použití, které funguje. Ukaž co ti nefunguje. Nesnažíš se o něco jako:
file_put_contents('http://server.tld/adresar/soubor.txt', 'ahoj')
?
Pavel Kr.
Profil *
juriad:
používám přesně co jsem napsal. Vím, že to funguje, ale na můj server to prostě nic nenahraje. Nevím, jestli je potřeba něco třeba ještě někde nastavit nebo co zkontrolovat jestli je nastavené.
file_uploads je ON.
Davex
Profil
Pavel Kr.:
Třeba není do adresáře povolen zápis a je zapotřebí upravit práva.
juriad
Profil
Takže jsi to jen špatně formuloval. Frází „nahrát na server“ se obvykle myslí nahrát odněkud odjinud (zvenku). Nedaří se ti tedy uložit text do souboru na serveru.

Zkontroluj si oprávnění (chmod).
Pavel Kr.
Profil *
Práva uživatel, skupina, ostatní

pro zápis má jen uživatel, musí je mít všichni?
juriad
Profil
To záleží na tom, pod kterým uživatelem a skupinou běží webový server (asi apache).
Běží-li pod stejným uživatelem, stačí nastavit uživateli oprávnění k zápisu.
Běží-li pod stejnou skupinou, stačí nastavit skupině oprávnění k zápisu.
Jinak nastav oprávnění všem ostatním.

Další možností je změnit vlastníka nebo skupinu souboru, tak aby vlastníkem byl webový server nebo byl alespoň ve stejné skupině.
Nastavovat to asi chceš adresáři a všem souborům v něm.
Pavel Kr.
Profil *
Díky byly to ty práva. Můžete mi prosím ještě osvětlit co přesně znamená když jsem dal práva pro zápis všem ostatním? Kdo je teda vlastně má?
Keeehi
Profil
Pavel Kr.:
Kdo je teda vlastně má?
Jakýkoli proces běžící pod kterýmkoli uživatelem. Všechny uživatele najdeš případně v /etc/passwd.
juriad to popsal přesněji.

Asi by se hodilo změnit vlastníka nabo alespoň skupinu tomu souboru. Pomocí
<?php
$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
byste měl zjistit, pod jakým uživatelem ten proces vlastně běží. Velmi pavděpodobně to bude www-data ale záleží na konfiguraci.
juriad
Profil
Kdokoli má přístup k tomu adresáři, může do něj zapsat (vytvořit soubor). Kdo má přístup záleží na tom, zda nadřazené adresáře mají search (eXecute bit) pro přistupujícího uživatele (něj, jeho skupinu či ostatní).

Práva jsou aditivní. Jakmile něco nastavíš skupině, týká se to i uživatele, pokud je v té skupině. Obdobně, pokud něco nastavíš ostatním, týká se to úplně všech, včetně skupiny a vlastníka.

Keeehi:
Přesněji - najdeš pomocí getent passwd, pokud pracuješ na stroji, kde jsou uživatelské účty spravovány centrálně třeba pomocí LDAP.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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