Autor Zpráva
Morlon
Profil *
Zdravím,
mám eshop založený na prestashopu, a při pokusu nahrání jakéhokoli souboru (obrázek, PDF,...)
mi skočí interní chyba serveru:
PHP Warning:  File upload error - unable to create a temporary file in Unknown on line 0

doma mi to bez problému jede, takže předpokládám že to bude něco v nastavení serveru nebo php
poradíte někdo?
Zechy
Profil
Zřejmě máš CHMOD pro složku kam to nahráváš nastavenej na 644, v tom případě PHP může data jenom číst, né je vytvářet.
Morlon
Profil *
tak tomu tak trošku nerozumím :/
poradíš jak to přenastavit?
Zechy
Profil
Stačí změnit práva k složce na WebFTP u hostingu nebo to zvládne třeba i Total Commander, jestli si pamatuju dobře tak Soubor > Změnit práva.
Morlon
Profil *
no ještě bych měl asi dodat že mi ten server běží na Windows web server 2008 a IIS kde php je dodělaný přes FastCGI, a práva mám tam mám nastavený jak na čtení tak i zápis
Davex
Profil
Morlon:
práva mám tam mám nastavený jak na čtení tak i zápis
Pouze pro tebe nebo i pro uživatele pod kterým se spouští PHP?

unable to create a temporary file
Je také správně nastavený a vytvořený adresář pro dočasné soubory (upload_tmp_dir)?
peta
Profil
Zkus tohle, co to vypise za prava a cisla.
<?php
function isRequest($_name,$_def="",$_format = "PGS")
{
$formats = array (
	'P'=>'_POST',
	'G'=>'_GET',
	'C'=>'_COOKIE',
	'S'=>'_SESSION',
	'R'=>'_REQUEST',
	'F'=>'_FILES',
	);
preg_match_all("/[".implode('',array_keys($formats))."]/", $_format, $matches);
foreach ($matches[0] as $value)
	{
	if (isset($GLOBALS[$formats[$value]][$_name]))
		{   
		return $GLOBALS[$formats[$value]][$_name];
		}
	}
return $_def;
}

function getini($name,$default='-')
{
return @ini_get($name) ? ini_get($name) : (get_cfg_var($name) ? get_cfg_var($name) : $default);
}

// --- dir info ---
//user_dir | open_basedir
$dir = array(
'base'    => getini('open_basedir',''),	//home
'cwd'     => getcwd(),			// /home/didou
'upl_tmp' => getini('upload_tmp_dir'),	//temp
'this'    => urldecode(isRequest('folder','','PG'))
);
$limit = array(
'upload' => getini("upload_max_filesize"),	// upload size
'post'   => getini("post_max_size"),		// post size
'memory' => getini("memory_limit")		// memory limit size
);
$dir['to']   = $dir['this'] ."/";
echo '<pre>';
print_r($limit);
print_r($dir);

//---
function formatPerm($perm)
{
return substr(sprintf('%o', $perm), -3);
}

function getFormatPerm($path)
{
return formatPerm(fileperms($path));
}

echo '
<table>
<tr><td>BASE</td>	<td>'.$dir['base']			 .'</td><td>'.getFormatPerm($dir['base'])   .'</td></tr>
<tr><td>CWD</td>	<td>'.$dir['cwd']			 .'</td><td>'.getFormatPerm($dir['cwd'])    .'</td></tr>
<tr><td>upload TMP</td>	<td>'.sprintf("%-38s",$dir['upl_tmp'])	 .'</td><td>'.getFormatPerm($dir['upl_tmp']).'</td></tr>
<tr><td>upload move</td><td>'.sprintf("%-38s",$dir['to'])	 .'</td><td>'.getFormatPerm($dir['to'])     .'</td></tr>
';
?>


Me to treba vypisuje tohle, ale this a to si nevsimej, to prave predelavam.
Array
(
    [upload] => 2M
    [post] => 8M
    [memory] => 128M
)
Array
(
    [base] => 
    [cwd] => C:\wamp\www\rs0b\filemanager
    [upl_tmp] => c:/wamp/tmp
    [this] => 
    [to] => /
)

BASE 		0
CWD 	C:\wamp\www\rs0b\filemanager	777
upload TMP 	c:/wamp/tmp 	777
upload move	/ 	777

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0