Problem so SafeStream
- westrem
- Člen | 398
Zdravim,
mam mensi problem tykajuci sa SafeStream-u.
Pri pokuse zapisat nieco do suboru pomocou funkcie file_put_contents mi PHP hlasi chybu, ze SafeStream::stream_open zlyhalo.
Cela hlaska chyby je tu:
Warning: file_put_contents(safe:///absolutna/cesta/k/suboru) [function.file-put-contents]: failed to open stream: „SafeStream::stream_open“ call failed
Neviete niekto, kde by mohol byt problem?
Pre istotu dodam, ze pouzivam SafeStream triedu separatne v jednom malom projekte (tzn nie vo vnutri Nette), kedze sa da oddelit a pouzit ako samostatny wrapper.
Za akekolvek napady // riesenia vopred dakujem
- westrem
- Člen | 398
Tak veci s filesystemom mam v separatnej classe pFileSystem
<?php
//loading SafeStream wrapper from nette framework
require_once DEFS_DIR.'/class.nette.SafeStream.php';
//registering safestream safe://
SafeStream::register();
class pFileSystem extends pObject {
/**
* Protocol prefix
*
*/
const PROTOCOL = 'safe://';
static public function putToFile($file, $toPut) {
return file_put_contents(self::PROTOCOL.$file, $toPut);
}
// ... pokracovanie class
}
?>
Chybu hlasi presne na tom riadku kde je file_put_contents.
Zaujimave vsak je, ze na niektorzch hostingoch (napr u websupport-u) vsetko funguje okej, no niekde nie ..
- norbe
- Backer | 405
westrem napsal(a):
Warning: file_put_contents(safe:///absolutna/cesta/k/suboru) [function.file-put-contents]: failed to open stream: „SafeStream::stream_open“ call failedNeviete niekto, kde by mohol byt problem?
Řekl bych, že by chyba mohla být v té cestě. Máš tam 3 lomítka, zkus jedno smazat (safe:///absolutna/cesta/k/suboru upravit na safe://absolutna/cesta/k/suboru)…
- westrem
- Člen | 398
norbe napsal(a):
westrem napsal(a):
Warning: file_put_contents(safe:///absolutna/cesta/k/suboru) [function.file-put-contents]: failed to open stream: „SafeStream::stream_open“ call failedNeviete niekto, kde by mohol byt problem?
Řekl bych, že by chyba mohla být v té cestě. Máš tam 3 lomítka, zkus jedno smazat (safe:///absolutna/cesta/k/suboru upravit na safe://absolutna/cesta/k/suboru)…
Nie nie, tri lomitka su v poriadku – potom by to totiz nebola absolutna cesta
Dve lomitka patria k streamu (http://, ftp://, safe:// …) a to tretie je zaciatok absolutnej cesty na unix/like systemoch.
Ako vravim niekde to ide niekde nie, problem by skorej mohol byt v povahe streamov v PHP. Z nejakeho dovodu totiz sa stream pomocou stream_open neotvori. Vie niekto o nejakom nastaveni PHP, ktore by s tymto malo nieco docinenia?
- westrem
- Člen | 398
Nie, uvedeny kod nefunguje a hodi nasledovne warnings a notice:
Warning: Missing argument 2 for SafeStream::stream_open(), called in /some/path/page.index.php on line 24 and defined in /some/path/class.nette.SafeStream.php on line 90
Warning: Missing argument 3 for SafeStream::stream_open(), called in /some/path/page.index.php on line 24 and defined in /some/path/class.nette.SafeStream.php on line 90
Warning: Missing argument 4 for SafeStream::stream_open(), called in /some/path/page.index.php on line 24 and defined in /some/path/class.nette.SafeStream.php on line 90
Notice: Undefined variable: mode in /some/path/class.nette.SafeStream.php on line 94
Notice: Undefined variable: mode in /some/path/class.nette.SafeStream.php on line 95
Notice: Undefined variable: options in /some/path/class.nette.SafeStream.php on line 96
Warning: Unsupported mode in /some/path/class.nette.SafeStream.php on line 161
- David Grudl
- Nette Core | 8228
No jasně, tam je potřeba uvést další argumenty
$ss->stream_open($file, 'w', NULL, $foo)
. Nicméně funkce se
volá, netuším, proč to se safe stream nejede…