open_basedir restriction in effect
Hej eksperterJeg forsøger at oprette en kalender hvor min clan/guild kan tilmelde sig nogle tidspunkter for hvornår vi skal mødes. Jeg har downloadet en standard template (phpraider), men efter lidt bøvl med installationen får jeg denne fejl:
-------------------------------------
Warning: tempnam() [function.tempnam]: open_basedir restriction in effect. File(C:\WINDOWS\TEMP\) is not within the allowed path(s): (.;E:/hjemmesider/munz/beast.wep.dk;E:/hjemmesider/munz//tmp/) in E:\hjemmesider\munz\beast.wep.dk\phpraider\includes\classes\smarty\internals\core.write_file.php on line 27
----------------------------------------
Efter lidt læsning her på siden kan jeg se det skyldes at safe_mode er on i php.ini hvis jeg har forstået det korrekt. Problemet for mit vedkommende er at denne phpraider ligger på en gratis host, som højst sandsynligt ikke har lyst til at lukke for safe_mode (hvilket er fuldt forståeligt)
Mit spørgsmål til jer, er det muligt at omgå dette ved at ændre disse stier i selve php koden?
Se f.eks. nedenstående kode som tilhører ovenstående fejl. hvordan ændre jeg denne sådan at stien ikke kommer til at ligge i tmp?
------------------------
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* write out a file to disk
*
* @param string $filename
* @param string $contents
* @param boolean $create_dirs
* @return boolean
*/
function smarty_core_write_file($params, &$smarty)
{
$_dirname = dirname($params['filename']);
if ($params['create_dirs']) {
$_params = array('dir' => $_dirname);
require_once(SMARTY_CORE_DIR.'core.create_dir_structure.php');
smarty_core_create_dir_structure($_params, $smarty);
}
// write to tmp file, then rename it to avoid file locking race condition
$_tmp_file = tempnam($_dirname, 'wrt');
if (!($fd = @fopen($_tmp_file, 'wb'))) {
$_tmp_file = $_dirname.DIRECTORY_SEPARATOR.uniqid('wrt');
if (!($fd = @fopen($_tmp_file, 'wb'))) {
$smarty->trigger_error("problem writing temporary file '$_tmp_file'");
return false;
}
}
fwrite($fd, $params['contents']);
fclose($fd);
if (PHP_OS == 'Windows' || !@rename($_tmp_file, $params['filename'])) {
// On platforms and filesystems that cannot overwrite with rename()
// delete the file before renaming it -- because windows always suffers
// this, it is short-circuited to avoid the initial rename() attempt
@unlink($params['filename']);
@rename($_tmp_file, $params['filename']);
}
@chmod($params['filename'], $smarty->_file_perms);
return true;
}
/* vim: set expandtab: */
?>
