Почему я не могу сделать запись файла в php? - PullRequest
0 голосов
/ 03 августа 2011

Привет, у меня есть клиент, подключающийся к серверу сокетов в php.

Я хочу очистить определенный файл после подключения к серверу, однако коды не дают мне никакой ошибки, но не записывают в файл?

<?php 
set_time_limit(0);

//parameters to connect to server
$ip = "127.0.0.1";
$port = "1245";
$data = "";

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, $ip, $port);

$myFile = "test.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, ""); 

while (true)
{
        $data = "some value here"

        socket_write($socket, $data, strlen($data));

        $line =@socket_read($socket,2048, PHP_NORMAL_READ);
        if($line != "")
        {
                echo $line."\n";
        }   

}
socket_close($socket);
?>

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Я бы проверил, доступен ли файл для записи, прежде чем открывать его:

if(is_writable($myFile)) {
  $fh = fopen($myFile, 'w');
} else {
  die('unable to write to '.$myFile);
}
1 голос
/ 03 августа 2011

Я бы использовал абсолютный путь $myFile = "/tmp/test.txt";, чтобы убедиться, что я знаю, где файл должен быть записан. Прямо сейчас только с text.txt это может быть написано во множестве мест, но наиболее вероятно, где двоичный файл веб-серверов расположен.

Если вы не хотите использовать абсолютный путь, вы можете использовать http://php.net/manual/en/function.getcwd.php и http://www.php.net/manual/en/function.chdir.php для управления текущим рабочим каталогом.

...