为什么我不能用PHP写文件?

时间:2011-08-03 03:13:39

标签: php sockets fwrite

嗨我有一个客户端连接到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 个答案:

答案 0 :(得分:1)

我使用绝对路径$myFile = "/tmp/test.txt";来确保我知道文件的写入位置。现在只使用text.txt,它可以写在各种各样的地方,但很可能是Web服务器二进制文件所在的位置。

如果您不想使用绝对路径,可以使用http://php.net/manual/en/function.getcwd.phphttp://www.php.net/manual/en/function.chdir.php来控制当前的工作目录。

答案 1 :(得分:1)

在尝试打开文件之前,我会检查文件是否可写:

if(is_writable($myFile)) {
  $fh = fopen($myFile, 'w');
} else {
  die('unable to write to '.$myFile);
}