Avatar
Snorlax
Redaktor
Avatar
Snorlax:

Zdravím, potřeboval bych poradit s chybou:

Fatal error: Uncaught --> Smarty: unable to write file ./templates_c/wrt54429e6dd0ed41_72672801 <-- thrown in /.../Smarty-3.1.19/libs/sysplugins/smarty_internal_write_file.php on line 46

tady je kus onoho smarty_internal_wri­te_file.php:

 // write to tmp file, then move to overt file lock race condition
 $_tmp_file = $_dirpath . DS . str_replace(array('.', ','), '_', uniqid('wrt', true));
 if (!file_put_contents($_tmp_file, $_contents)) {
     error_reporting($_error_reporting);
     throw new SmartyException("unable to write file {$_tmp_file}"); //řádek 46
}

Na internetu jsem se toho moc nedočetl, pouze něco s oprávněními. Tak jsem je všelijak zkoušel. Bohužel ani 777 na celej localhost tomu nebyl dostačující. Někde jsem i zahlédl 755, ani ten nepomohl. Chyba v zdrojáku to zřejmě nebude, jelikož ten web na Windowsu fungoval a když jsem ho pak dal na Linux tak to tam háže tohle.
Ještě mi to házelo error

Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /.../Smarty-3.1.19/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 244

tu ale opravilo dodání řádku date.timezone = Europe/Prague v php.ini

Budu rád za jakoukoliv radu, díky předem :)

Odpovědět 18.10.2014 19:18
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Richard:

Když si měnil práva, změnil jsi je rekurzivně? Tedy, mají všechny složky i podsložky 777? Tipnul bych že tomu souboru do kterýho to chce zapisovat správná práva chybí.

Ale obecně si na to šel špatně, měnit práva je chyba (a měnit práva na 777 šílenost). Oprávnění tam chybělo z nějakého důvodu.

Nahoru Odpovědět 18.10.2014 19:40
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Richard
Snorlax:

Jo, dával jsem to, ještě jsem to kontroval. A ano, vím že je to šílenost, ale já sám jsem z toho už šílený :D

Nahoru Odpovědět 18.10.2014 19:58
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Odpovídá na Snorlax
Michal Štěpánek:

To, že ti to na Windowsech fungovalo ještě neznamená, že na Linuxu to bude běhat taky. Setkal jsem se s tím, že stejný kód na win byl OK a na Linuxu jsem byl v pr... jak Baťa s dřevákama. Zkontroluj si přístupová práva do toho konkrétního adresáře, kam chceš zapisovat a hlavně nedávej Full na celej Localhost.

Nahoru Odpovědět 18.10.2014 20:02
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Snorlax:

Co myslíš konkrétním adresářem? Struktura webu je:
Projekt

  • app

-- model
-- view (soubory .tpl)
-- controller

  • libs (tam je i to smarty)
  • www

-- index.php

Samozřejmě je větší, ale asi nebude problém ve složce s obrázky...

Editováno 18.10.2014 20:12
Nahoru Odpovědět 18.10.2014 20:10
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Odpovídá na Snorlax
Richard:

Práva na zápis musí být na ./templates_c/

To že práva na zápis jsou na localhostu je k ničemu, když zapisuješ jinam. Řekni Smarty ať si to zapisuje někam do adresáře projektu třeba a máš klid.

Editováno 18.10.2014 20:13
Nahoru Odpovědět 18.10.2014 20:12
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Richard
Snorlax:

No takovou složku jsem právě že nenašel...

Nahoru Odpovědět 18.10.2014 20:13
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Odpovídá na Snorlax
Richard:

Zřejmě vůbec neexistuje - další důvod proč to nejde. Někde se určitě nastavuje kam to má zapisovat, tak to změň.

Nahoru Odpovědět 18.10.2014 20:14
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Richard
Snorlax:

našel jsem Smarty-3.1.19/Smarty­.class.php:681
->setCompileDir('.' . DS . 'templates_c' . DS)

Ale nevím odkud to mám počítat. Od indexu? Od složky kde je ta knihovna?
Co vím tak tam ta složka doteď nebyla a nějak ho to moc netrápilo...

Nahoru Odpovědět 18.10.2014 20:24
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Odpovídá na Snorlax
Richard:

Vyzkoušej, buďto absolutní cestu, nebo cestu od toho souboru. Liší se to podle nastavení.

Co je v tom DS ?

Editováno 18.10.2014 20:50
Nahoru Odpovědět 18.10.2014 20:48
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Nahoru Odpovědět 18.10.2014 20:54
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Odpovídá na Snorlax
Richard:

Asi bych odstranil tečku a navedl to kam potřebuju.. /var/www ...

Nahoru Odpovědět 18.10.2014 21:03
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Richard
Snorlax:

Ani to nepomohlo. Dal jsem to do složky s indexem, ještě jsem tomu pro jistotu zas dal práva 777 a pořád nic :/

Nahoru Odpovědět 18.10.2014 23:28
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Richard:

A když do v tý složce vytvoříš soubor někde mimo smarty - v nějakým testovacím skriptu tak se to vytvoří?

Nahoru Odpovědět 19.10.2014 0:50
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Richard
Snorlax:

počkat to nechápu, jak to myslíš?

Nahoru Odpovědět 19.10.2014 1:05
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Odpovídá na Snorlax
Richard:

No jde mi o to jestli má problém jenom smarty, nebo je problém jinde - vytvořit test.php a v něm duplikovat to co dělá smarty. Pokud to projde bez chyby je problém ve smarty, pokud ne, je problém v právech a něco si udělal blbě.

Nahoru Odpovědět 19.10.2014 1:34
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Richard
Snorlax:

Tak jsem zkoušel jen načíst nějaký .tpl a nejde to. Dokonce ani demo v tom Smarty nefunguje :/ furt to hází tu samo chybu. Jediná změna je že ani když jsem tam nastavil tu absolutní cestu na tu mou vytvořenou složku tak to nefunguje.

Fatal error: Uncaught --> Smarty: unable to write file /var/www/html/.../www/templates_c/wrt5442fcd13c0395_64195805 <-- thrown in /var/www/html/.../libs/Smarty-3.1.19/libs/sysplugins/smarty_internal_write_file.php on line 46
Nahoru Odpovědět 19.10.2014 1:53
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Richard
Člen
Avatar
Richard:

Počkej, načíst? Nám jde o zápis ne?
Postní někam nastavení php/apache, jaký distro? Verze php? Co logy?

Nahoru Odpovědět  +1 19.10.2014 2:13
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Richard
Snorlax:

Tak moje phpinfo() vypadá takhle, z něj si asi vše potřebné vyčteš :)

http://www.editey.com/…Q/index.html

A co se týče logů, tak tam nic zajímavého nenajdeš.
V error_log nic zajímavého není (nečekaně ty errory co jsem tu psal):
Třeba tě bude zajímat po zapnutí, jestli z toho něco zajímavého vyčteš:

[Sun Oct 19 11:03:02.458305 2014] [core:notice] [pid 1130] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Sun Oct 19 11:03:02.709444 2014] [suexec:notice] [pid 1130] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.0.0.44. Set the 'ServerName' directive globally to suppress this message
[Sun Oct 19 11:03:02.917028 2014] [auth_digest:notice] [pid 1130] AH01757: generating secret for digest authentication ...
[Sun Oct 19 11:03:02.919100 2014] [lbmethod_heartbeat:notice] [pid 1130] AH02282: No slotmem from mod_heartmonitor
[Sun Oct 19 11:03:07.037228 2014] [mpm_prefork:notice] [pid 1130] AH00163: Apache/2.4.10 (Fedora) PHP/5.5.17 configured -- resuming normal operations
[Sun Oct 19 11:03:07.037278 2014] [core:notice] [pid 1130] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Sun Oct 19 11:11:07.060336 2014] [core:notice] [pid 996] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Sun Oct 19 11:11:07.500655 2014] [suexec:notice] [pid 996] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.0.0.44. Set the 'ServerName' directive globally to suppress this message
[Sun Oct 19 11:11:07.754191 2014] [auth_digest:notice] [pid 996] AH01757: generating secret for digest authentication ...
[Sun Oct 19 11:11:07.755478 2014] [lbmethod_heartbeat:notice] [pid 996] AH02282: No slotmem from mod_heartmonitor
[Sun Oct 19 11:11:14.521663 2014] [mpm_prefork:notice] [pid 996] AH00163: Apache/2.4.10 (Fedora) PHP/5.5.17 configured -- resuming normal operations
[Sun Oct 19 11:11:14.521725 2014] [core:notice] [pid 996] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
Nahoru Odpovědět 19.10.2014 11:42
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Snorlax
Redaktor
Avatar
Snorlax:

Nakonec mi pomohla tato rada:
http://stackoverflow.com/…l-bookings-t
a tento příkaz:

setsebool -P httpd_unified=1

I tak díky všem za snahu :)

Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět 26.10.2014 23:30
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.