无法打开流:HTTP包装器不支持可写连接

时间:2012-03-17 07:10:57

标签: php caching

我已将我的localhost文件上传到我的网站,但它显示我错误: -

: [2] file_put_contents( ***WebsiteURL*** /cache/lang/ ***FileName*** .php) 
[function.file-put-contents]: failed to open stream: HTTP wrapper does 
not support writeable connections | LINE: 127 | FILE: /home/content/
***Folders\FileName*** .php

我个人认为内容会保存在缓存文件夹中的文件中,当我将文件上传到我的Web服务器时,它会尝试访问缓存的localhost文件夹。

3 个答案:

答案 0 :(得分:142)

您需要使用file_put_contents(***WebSiteURL***...)的服务器路径(例如/cache/lang/file.php)而不是/home/content/site/folders/filename.php

您无法在HTTP上打开文件并希望将其写入。相反,您需要使用本地路径打开它。

答案 1 :(得分:0)

  

此代码可以帮助您。在我的情况下有效。

$filename = "D:\xampp\htdocs\wordpress/wp-content/uploads/json/2018-10-25.json";
    $fileUrl = "http://localhost/wordpress/wp-content/uploads/json/2018-10-25.json";
    if(!file_exists($filename)):
        $handle = fopen( $filename, 'a' ) or die( 'Cannot open file:  ' . $fileUrl ); //implicitly creates file
        fwrite( $handle, json_encode(array()));
        fclose( $handle );
    endif;
    $response = file_get_contents($filename);
    $tempArray = json_decode($response);
    if(!empty($tempArray)):
        $count = count($tempArray) + 1;
    else:
        $count = 1;
    endif;
    $tempArray[] = array_merge(array("sn." => $count), $data);
    $jsonData = json_encode($tempArray);
    file_put_contents($filename, $jsonData);

答案 2 :(得分:0)

是因为使用了网址,无法使用http写入数据。不要使用: http:// 或 https:// 在您所在的位置上传文件或保存数据或类似的处理。而不是使用 $_SERVER["HTTP_REFERER"] 使用 $_SERVER["DOCUMENT_ROOT"]。 例如:

错误:

move_uploaded_file($_FILES["File"]["tmp_name"],$_SERVER["HTTP_REFERER"].'/uploads/images/1.jpg')

正确:

move_uploaded_file($_FILES["File"]["tmp_name"],$_SERVER["DOCUMENT_ROOT"].'/uploads/images/1.jpg')