Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: Prefin 25 Dubna 2008, 08:52:28
-
Ahoj všichni.
Potřeboval bych poradit s touto maličkostí.
Dříve jsem provozoval svoje databáze na Windows (Php Home), kde po jednoduché instalaci vše běhalo jak má.
Nyní jsem si do kompu instaloval Xubuntu.
Podle návodu jsem přidal balíky Apache, php a Mysql.
Přemístil jsem si pracovní adresář z
/var/www
do
/home/--uzivatel--/www
a změnil v konfiguraci /etc/papche2/sites-available/default.
To je všechno OK.
Začal jsem mít ale oproti Woknům a Php Home problém z některými funkcemi.
Prozatím to je fopen() a mysql_create_db().
Při volání mysql_create_db() mi to vypíše
"Fatal error: Call to undefined function mysql_create_db() in /home/bobo/www/dbprodej/struktura.php on line 65" ale připojení k DB funguje (když vytvořím strukturu ručně a naimportuji data tak to běhá) - jestli ne nepletu tak ta hláška znamená nedefinovanou funkci,
a při pokusu o čtení či zápis v textovém souboru souboru
hláška ...... Permision denied.
Při instalaci vytvářim složku do které pak scripty zapisují a čtou:
if(!mkdir("zal", 0700)) {
$chyba = 1;
}
přičemže ta db v nezměněné podobě běhala rok na Woknech
Domnívám se, že je nutné něco v Apache povolit, ale nemůžu přijít na to co.
Díky za pomoc.
-
if(!is_dir("zal")){
umask(0);
mkdir("zal", 0777);
} else {
$chyba = 1;
}
-
Díky, ohledně té práce se soubory v této složce to bude asi ono, ale proč se mi nechce vytvořit databáze to prozatím nevím.
-
Skoro bych řekl, že je vhodnější vytvářet db např. takto:
mysql_query("CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci");
-
Nevím jestli je to správně či ne, ale mě jde pustit Mysql jen pod rootem. Tím myslím příkaz mysql, po kterém mi vyjede ta MySQL příkazová řádka.
Ale osobně mám nejradši všechno přes phpmyadmin. Nevím si rady s nastavováním kódování a porovnáváním v konsoli a v phpmyadmin je to rychlejší a přehlednější... i když jsem se mu jeden čas taky dlouho bránil...
-
Tady ani tak moc nešlo o konzoli jako o php script a volání php funkce mysql_create_db() - proč to nejede je těžko říci, nicméně je to potřeba (např. protože si shop pro každý rok automaticky vytváří novou databázi). Asi bych to ale raději opravdu řešil přes mysql_query()
Jinak konzolový program mysql jede nejen pod rootem - jen potřeba je spouštět s parametry:
mysql [OPTIONS] [database]
mysql -uuzivatel -pheslo jmenodatabaze
-
Skoro bych řekl, že je vhodnější vytvářet db např. takto:
mysql_query("CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci");
Asi to bude takhle vhodnější. Nejsem žádný odborník, a už jsem to skoro zapoměl.
Db jsem si vytvořil zatím v phpadminu a naimportoval data taky manuálně.
Ale co mě pořád zaráží je tahle hláška:
"Warning: fopen(../zal/zaloha_16_04_08_16_04_.txt) [function.fopen]: failed to open stream: Permission denied in /home/bobo/www/dbprodej/ad/nacti_dodb.php on line 23"
při pokusu o práci se souborem ve složce zal.
Podle mě je to nepovolený přístup.
Cesta je dobře, zkoušel jsem i absolutní ale je to stejné. Www mám místo ve /var v /home, práva jsou rwx a tak jak to je tak to na woknech chodilo.
Nemusí se něco v apache povolit? Pamatuji se, že při tvorbě jednoho webu jsem musel někde na webhostingu (nevím už kde) požádat o povolení práce se soubory.
Díky
-
Hele, řeknu jak to řeším já, ale nekamenujte mě, protože je to strašně prasácký...
Prostě otevřu mc, vytvořim si složku kde mám soubory do kterejch budu zapisovat a dám všem práva číst, psát, spouštět, nebo si takhle upravim konkrétní soubor... Vim že je to prasárna, ale funguje mi to :-D
-
A kde se tu složku pokoušíte zakládat? Jděte do té cesty a chmodněte tomu (resp. nadřazenému adresáři) plná práva.
-
No právě že to je v /home/uživatel/www/moje_databáze tam jsou samozřejmě v celé cestě práva uživatele pod kterým jsem přihlášen - kontroloval jsem to.
Prostě mi to hlava moc nebere. ???
-
fopen je někde zakázaný v nastavení apache... ale nevím kde... to musíte hledat... jsem to už zapoměl z hlavy....
Zkuste místo toho toto:
function cti_url($url)
{
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$body = curl_exec ($ch);
curl_close ($ch);
return $body;
}
-
Hele, ale já mám pocit že je jedno pod kterým jsi uživatelem... mám totiž nepříjemný pocit že apache má vlastní skupinu, či uživatele... určitě vím že něco takovýho je... takže spíš zkus dát práva všem... určitě mám uživatelskou skupinu apache... schválně se podívám.
Mám tam skupinu/uživatele www-data.. .podle mě je to ono...
-
Samosebou, že apache běží pod určitým uživatelem - dokonce svým uživatelem www-data - pokud tento uživatel nemá práva, nedostanete se nikam.
fopen jsem zkoušel a zakázaný není (nevím jak v safemode)
-
No tak v tom případě je to jak jsem říkal. Stačí přivlastnit www-data ten soubor/složku do které potřebuje zápis... není nutné mu přivlastnovat celou cestu. Opravdu stačí jen ten soubor/složka.
-
No tak v tom případě je to jak jsem říkal. Stačí přivlastnit www-data ten soubor/složku do které potřebuje zápis... není nutné mu přivlastnovat celou cestu. Opravdu stačí jen ten soubor/složka.
No jo, ale neměla by se taková skupina objevit v seznamu (vlastnosti -> Přístupová práva)?
Já jsem tam takovou skupinu (pokud to tedy nebude uživatel) nenašel. Určitě ne www-data, přitom apache běží.
-
No tak v tom případě je to jak jsem říkal. Stačí přivlastnit www-data ten soubor/složku do které potřebuje zápis... není nutné mu přivlastnovat celou cestu. Opravdu stačí jen ten soubor/složka.
No jo, ale neměla by se taková skupina objevit v seznamu (vlastnosti -> Přístupová práva)?
Já jsem tam takovou skupinu (pokud to tedy nebude uživatel) nenašel. Určitě ne www-data, přitom apache běží.
Kecám.
Kouknul jsem se do apache2.conf a opravdu je to uživatel www-data a skupina www-data.
-
Můžu mít ještě jednu prosbičku?
Vím, že se ptám jako úplná lama a že bych mohl dostat odpověď ve smyslu nauč se to a pochopil bych to (mám to i v úmyslu).
Bohužel však teď nemám čas, potřebuji pracovat a bez té změny to nepůjde.
Poraďte mi jak napsat ten příkaz na přivlastnění (nebo povolení zápisu) složky /home/bobo/www/dbprodej/zal pro uživatele www-data do terminálu, nechtěl bych něco zkonit.
Díky
-
no pokud nemáte rootovska práva, asi nejjednodusší pro vás bude spíše povolit všem, aby mohli do slozky zapisovat (a spuštět):
chmod 0777 /home/bobo/www/dbprodej/zal
pokud máte možnost využití root oprávnění, pak se změna majitele provádí pomocí příkazu chown (zkratka CHange OWner),
je dobré ponechat vlastnictví souborů sobě a měnit pouze skupinu, která může do složky a následně povolit vše sobě a skupině, ostatním povolit jen spouštění a čtení pomocí chmod:
chown mujlogin:www-data /home/bobo/www/dbprodej/zal
chmod 0775 /home/bobo/www/dbprodej/zal
-
Tyhle změny jdou velice jednoduše provádět i přes Midnight Comander :).
-
Ahojda.
Tak jsem udělal všechno co jste mi radili ale pořád to není nic platné.
Vlastníka na složce /zal mám www-data.
Při pokusech scriptu o práci se souborem se mi objevuje:
Warning: fopen(/zal/zaloha_27_04_08_11_04_.txt) [function.fopen]: failed to open stream: No such file or directory in /home/bobo/www/dbprodej/vytvor_zalohu.php on line 9
Warning: fwrite(): supplied argument is not a valid stream resource in /home/bobo/www/dbprodej/vytvor_zalohu.php on line 51
Warning: fclose(): supplied argument is not a valid stream resource in /home/bobo/www/dbprodej/vytvor_zalohu.php on line 57
Teď už mě napadá opravdu jenom to, jestli není práce se soubory v apache někde implicitně zakázaná (i když bych to neřekl). Je ale možné, že se nastavení apache od distribuce v Php Home nebo Triad může trochu lišit.
V.
-
To je blbost... já používám apache 2 s php a mysql a nikdy jsem ho nekonfiguroval. Vždycky mi to fungovalo od základu... Hele, nejlepší by bylo kdyby se k tobě ještě pro jistotu podíval přes SSH, nebo jak se ten protokol jmenuje a skouknul ten skript co zapisuje a potom ještě ty práva... Protože apache alespon u mě nikdy nic sám od sebe nezakázal...
-
To je blbost... já používám apache 2 s php a mysql a nikdy jsem ho nekonfiguroval. Vždycky mi to fungovalo od základu... Hele, nejlepší by bylo kdyby se k tobě ještě pro jistotu podíval přes SSH, nebo jak se ten protokol jmenuje a skouknul ten skript co zapisuje a potom ještě ty práva... Protože apache alespon u mě nikdy nic sám od sebe nezakázal...
Asi ti tak bude.
Zkusím si ještě pohrát se scriptem php.
-
Proč jste nepoužil to co jsem Vám radil já? U mě třeba na hostingu nefunguje fopen...
-
Proč jste nepoužil to co jsem Vám radil já? U mě třeba na hostingu nefunguje fopen...
Díky, to bych mohl a udělám to pokud nic jiného nepomůže. Problém je v tom, že bych musel v dost předělávat - je to poměrně stará databáze a ještě v ní nemám includované funkce ale pokaždé obsažené v kódu.
Teď už to dělám jinak.
A jde tu taky o to proč to nejde stejně jako dřív - někde musí být problém a chci na něj přijít.
-
Proč jste nepoužil to co jsem Vám radil já? U mě třeba na hostingu nefunguje fopen...
Díky, to bych mohl a udělám to pokud nic jiného nepomůže. Problém je v tom, že bych musel v dost předělávat - je to poměrně stará databáze a ještě v ní nemám includované funkce ale pokaždé obsažené v kódu.
Teď už to dělám jinak.
A jde tu taky o to proč to nejde stejně jako dřív - někde musí být problém a chci na něj přijít.
Já třeba na hostingu měl taky script s fopen a vím, že to na hostingách mají vypnuté. (aby fopen nefungovalo a šlo to přes ten script co jsem Vám sem dal). Nevím jestli je to default a hned po instalaci apache je to vypnuté. Ale určitě je v configu apache na výběr. Už nevím z hlavy kde. Kdysi jsem to taky hledal. Zkoušek hledat... ;)
-
Proč jsem jediný komu to funguje i na hostingu i hned po instalaci? Ani na hostingu nepoužívám žádnou funkci, ale normálně fopen a funguje mi to... takže já to asi nějak nepobírám. Ani v Apache nemám problém...
-
Proč jsem jediný komu to funguje i na hostingu i hned po instalaci? Ani na hostingu nepoužívám žádnou funkci, ale normálně fopen a funguje mi to... takže já to asi nějak nepobírám. Ani v Apache nemám problém...
U Vás na Vašem serveru je to možné, že to po instalaci jede.... opravdu nevím jak to je po instalaci. Na hostingu hostingplus.cz nebo blueboard.cz vím, že je to zakázané ;)
-
Aha... no já používám forpsi... takže je klidně možné že je to jinak...