| Autor | Zpráva | ||
|---|---|---|---|
| goro99 Profil |
#1 · Zasláno: 26. 1. 2014, 14:06:41
Ahoj,
Programoval jsem stránky v PHP na intranet a zkoušel jsem si to vždy spustit v na localhostu (mám win 8.1) a pak jsem nahrál stránky na apache server na linux (na raspberry pi) a stránky se sice zobrazují ale nefunguje zapisování do txt souborů. Tak nevím co mám dělat jestli něco nastvait v configu opravdu nevím. Díkes za odpovědi |
||
| Tori Profil |
Máte správně nastavené cesty k souborům (ideálně absolutní)? Nastavená přístupová práva pro zápis pro uživatele, pod kterým běží apache? Pokud oboje ano, ukažte třeba tu část skriptu, kterou zapisujete.
edit: chyby to žádné nehlásí? |
||
| goro99 Profil |
Cesty jsou správně, absolutní sice ne, tak to ještě vyzkouším a přístupová práva snad taky nejdřív mě to nechtělo pustit zkoupárovat do /var/www ty stránky ale to jsem nastavil a pod tím stejným uživatelem apache beží.
Skriptů kde se zapisuje je tam víc tohle je jeden z nich: <?php
$f=fopen("xyz.txt", "a");
$x=$_POST['x'];
$y=$_POST['y'];
$z=$_POST['z'];
$a=$_POST['a'];
$b=$_POST['b'];
$c=$_POST['c'];
if ($a==""||$b==""||$c==""||$x==""||$y==""||$z=="")
{
echo "something is wrong";
echo "<br>";
echo "<a href=add.php>Back</a>";
}
else
{
fwrite($f, $a);
fwrite($f, "=");
fwrite($f, $x);
fwrite($f, ";");
fwrite($f, $b);
fwrite($f, "=");
fwrite($f, $y);
fwrite($f, ";");
fwrite($f, $c);
fwrite($f, "=");
fwrite($f, $z);
fwrite($f, ";");
fwrite($f, "@");
fclose($f);
//tohle uz je jen zalohovani
$osouboru=file_get_contents('xyz.txt');
$promene=explode(";",$osouboru);
$promenecount=(count($promene))-1;
$datum=date("d_m_Y");
if (($slovicek%6)==0)
{
$f = fopen("zaloha_".$datum.".txt","wb");
fwrite($f,$osouboru);
fclose($f);
}
echo "Saved";
echo "<br>";
echo "<a href=index.php>Backn</a>";
}
?>Tak jsem tam zkusil dát absolutní cetsu a stejně to nefunguje jo a ještě něco zapisuje do souboru pomocí f write a něco pomocí file_put_contents (a absolutní adresu jsem zkoušel dávat u toho file_put_contents) |
||
| Tori Profil |
#4 · Zasláno: 26. 1. 2014, 15:13:26 · Upravil/a: Tori
Místo řádků 41-3 by šlo použít file_put_contents, ř.2 by měl být až ve větvi else (před ř.17), a nemá místo
$slovicek být $promenecount? Jinak to, až na ty relativní cesty, vypadá ok.Kdyžtak ověřte zapisovatelnost ve skriptu - is_writable na cílový adresář. |
||
| goro99 Profil |
#5 · Zasláno: 26. 1. 2014, 15:36:25
jojo $slovicek je $promenecount a zbytek opravím v tom případě kde je chyba ?
|
||
| peta Profil |
#6 · Zasláno: 27. 1. 2014, 08:07:18
goro99:
Bylo by fajn vety oddelovat carkou nebo teckou. "nejdřív mě to nechtělo pustit zkoupárovat do /var/www ty stránky" To jsi zkousel pres FTP nebo jako bezny linux uzivatel? Protoze pro zobrazeni stranek je treba nastavit prava na souborech, slozkach pro apache uzivatele a povolit mu zapis do souboru, pripadne vytvareni souboru. Default je nastaveno na linuxu, ze nemuze php vytvaret adresare ani soubory. Proc? Protoze php uzivatel (apache) ma pristup k cele rade systemovych funkci a adresaru. Mozna to pujde udelat pres php chmod nebo pak jedine pres linux uzivatele. |
||
| goro99 Profil |
#7 · Zasláno: 27. 1. 2014, 15:55:28
Zkoušel jsem to jako linux uživatel, takže je chyba asi jak řikáte v tom že php na to nemá práva. Mohli by jste mi prosím napsat kde mám toto oprávnění nastavit protože z výrazu php chmod si jako lajk nic nevezmu, díky moc
|
||
| Tori Profil |
#8 · Zasláno: 27. 1. 2014, 17:47:32
goro99:
Má se zapisovat do adresáře, ve kterém je i ten skript, ano? A zkusil jste na začátek skriptu přidat něco jako echo "Tento adresář ".(is_writable(__DIR__) ? "je" : "není")." zapisovatelný"; , co to vypíše? chmod viz manuál, jsou tam příklady.
|
||
|
Časová prodleva: 3 dny
|
|||
| goro99 Profil |
#9 · Zasláno: 30. 1. 2014, 23:22:56
Promiňte za časovou prodlevu nemám nějak moc čas a když čas mám zase mi blbne wifi. Vyzkouším to zítra.
|
||
| goro99 Profil |
#10 · Zasláno: 31. 1. 2014, 16:46:36
Tak to píše, že adresář zapisovatelný je ovšem zapisovat to nechce.
|
||
| Tori Profil |
Ani s absolutní cestou?
$x=$_POST['x'];
$y=$_POST['y'];
$z=$_POST['z'];
$a=$_POST['a'];
$b=$_POST['b'];
$c=$_POST['c'];
if ($a==""||$b==""||$c==""||$x==""||$y==""||$z=="")
{
echo "something is wrong";
echo "<br>";
echo "<a href=add.php>Back</a>";
}
else
{
$str = "$a=$x;$b=$y;$c=$z;@";
if (!file_put_contents(__DIR__."/xyz.txt", $str, FILE_APPEND)) {
echo 'Data byla v pořádku, ale nezapsala se.';
else echo 'Ok.';
//tohle uz je jen zalohovani
|
||
| Alphard Profil |
#12 · Zasláno: 31. 1. 2014, 18:37:37
goro99:
Za celou dobu jste sem nezkopíroval žádnou chybovou hlášku. Opravdu se vám chyby zobrazují, když třeba uděláte překlep v syntaxi? |
||
| goro99 Profil |
#13 · Zasláno: 1. 2. 2014, 12:29:11
Ani s absolutní cestou to nezapisuje
$str = "$a=$x;$b=$y;$c=$z;@";
if (!file_put_contents(__DIR__."/xyz.txt", $str, FILE_APPEND)) {
echo 'Data byla v pořádku, ale nezapsala se.';
else echo 'Ok.'; |
||
| Alphard Profil |
#14 · Zasláno: 1. 2. 2014, 13:34:36
goro99:
„A jinak to chybové hlášky nějak nezobrazuje to jsem si všiml až teď protože jsem to psal na windows.“ Předpokládám, že je to vývojový server, takže v php.ini nastavit error_reporting = E_ALL display_errors = On |
||
| goro99 Profil |
#15 · Zasláno: 1. 2. 2014, 15:07:24
Nevím jestli je to správně ale nastavil jsem v /etc/php5/apache2/php.ini tohle
; display_errors ; Default Value: On ; Development Value: On ; Production Value: On ; display_startup_errors ; Default Value: Off ; Development Value: On ; Production Value: Off ; error_reporting ; Default Value: E_ALL ; Development Value: E_ALL ; Production Value: E_ALL ale chyby to stále nezobrazuje |
||
| juriad Profil |
#16 · Zasláno: 1. 2. 2014, 15:10:51
Řádka začínající středníkem je komentář; máš to napsané na začátkku toho souboru.
|
||
| goro99 Profil |
#17 · Zasláno: 1. 2. 2014, 16:06:22
Tak už se mi povedlo nastavit aby to psalo ty chyby
Warning: fopen(/var/www/xyz.txt): failed to open stream: Permission denied in /var/www/zapsat.php on line 18 |
||
| Alphard Profil |
#18 · Zasláno: 1. 2. 2014, 16:18:16
Je to jen vývojový server, že? Nebál bych se
chmod -R 777 /var/www/ |
||
| goro99 Profil |
#19 · Zasláno: 1. 2. 2014, 19:34:21 · Upravil/a: goro99
Nevím co myslíte tím vývojový server, ale je to Raspberry Pi na kterém běži printserver a tohle apache a v zásadě jestli se někdo dostane na ten intranet tak je to v celku jedno. Vyzkouším a napíšu.
chmod: changing permissions of '/var/www': Operation not permitted tohle to píše |
||
| Alphard Profil |
#20 · Zasláno: 1. 2. 2014, 23:35:21
Napadlo vás snad zkusit to s root oprávněním. Nebo ne?
|
||
| goro99 Profil |
#21 · Zasláno: 2. 2. 2014, 11:32:48
S linuxem vůbec neumím mohl by jste mi napsat přesnější postup nebo příkaz, děkuji.
|
||
| juriad Profil |
sudo chmod -R 777 /var/www/ Nejspíš po tobě bude chtít heslo - tvé heslo; nebude vidět, když ho zadáváš. |
||
| goro99 Profil |
#23 · Zasláno: 2. 2. 2014, 19:51:55
Tak už to funguje díky moc všem !
|
||
|
Časová prodleva: 12 let
|
|||
0