function.fopen проблемма

zIP

Новичок
function.fopen проблемма

Пытаюсь установить скрипт. При запуске инсталяции выдает следующее.
Warning: fopen(/tmp/inktank-c9db569cb388e160e4b86ca1ddff84d7/test-3966) [function.fopen]: failed to open stream: No such file or directory in F:\server\INFO\libs\init.php on line 68
Перевод я понимаю, но с такой ошибкой еще не сталкивался.

Вот собственно сама функция:

Код:
foreach(array("/tmp","/usr/tmp","savedstorycollections") as $place) {
	$post = "inktank-" . md5($ARG_Ghost->pickupMessage('Base URL'));
	if (@is_writable("$place/inktank-$post") || @mkdir("$place/$post")) {
		$ARG_Ghost->storeMessage('Temp Path',"$place/$post/");
		break;
	} else {
	   # Do a writability test anyways -- some providers have broken is_writable
	   # Non-scaleable trick, eh?
	   $r = rand(1,32768);
	   $f = fopen("$place/$post/test-$r","w");
	   if ($f) {
	       fclose($f);
	       unlink("$place/$post/test-$r");
	       $ARG_Ghost->storeMessage('Temp Path',"$place/$post/");
	       break;
	   }
	}
}
Вот 68 строка.
Код:
	   $f = fopen("$place/$post/test-$r","w");
 

moxnatiy

Новичок
/tmp/inktank-c9db569cb388e160e4b86ca1ddff84d7/test-3966

нет такой папки или файлика
что непонятно?
 

zIP

Новичок
Все понял. Просто туплю.

Спрашивает директорию tmp, а я создал директорию temp. Вот и сижу как болван.

-~{}~ 07.02.06 13:58:

Зато появилась другая ошибка.

Код:
Cannot re-assign $this in F:\server\INFO\objects\masters\ARStoryCollection.php on line 317
 

zIP

Новичок
Код:
	function loadSet ($id) {
		# Gets it and unserializes it
		global $ARG_Ghost;
		$bp = $ARG_Ghost->pickupMessage("Temp Path");
		if (is_file("$bp/$id")) {
			$f = fopen("$bp/$id","r");
			$dat = fread($f,filesize("$bp/$id"));
			$this = unserialize($dat);
			return true;
		} else {
			return false;
		}
	}
line 317
Код:
			$this = unserialize($dat);
 

Profic

just Profic (PHP5 BetaTeam)
white phoenix
не в тему
zIP
Дать автору йаду и переписать данный класс без использования присвоения $this. Сделав его, например, статическим методом.
 

zIP

Новичок
Т.е. так как эта переменная учавствует в конструкторе класса, то я это не смогу выличить?

Это сможет сделать тот кто написал?
 

Profic

just Profic (PHP5 BetaTeam)
Можешь, любой человек сможет. При наличии в голове хоть капельки логического мышления.
$this->method() или $this->property - это нормально.
$this = что-то - это неправильно и это нужно исправлять.
Данный метод можно переписать так:
PHP:
function loadSet ($id) {
    # Gets it and unserializes it
    global $ARG_Ghost;
    $bp = $ARG_Ghost->pickupMessage("Temp Path");
    if (is_file("$bp/$id")) {
        $f = fopen("$bp/$id","r");
        $dat = fread($f,filesize("$bp/$id"));
        return unserialize($dat);
    } else {
        return false;
    }
}
Использовать так:
PHP:
$set = class::loadSet();
 

zIP

Новичок
Сделал так:

Код:
	function loadSet ($id,$this_my) {
		# Gets it and unserializes it
		global $ARG_Ghost;
		$bp = $ARG_Ghost->pickupMessage("Temp Path");
		if (is_file("$bp/$id")) {
			$f = fopen("$bp/$id","r");
			$dat = fread($f,filesize("$bp/$id"));
      $this_my = $this;
      $this_my = unserialize($dat);
			return true;
		} else {
			return false;
		}
	}
Проблемма решилась в частности. А отразится ли это на работе скрипта в целом неизвестно.
Это корректно?
 
Сверху