Curl 无法在服务器上上传文件

Curl Not working to upload a file on server

我正在尝试使用 Api.And 在服务器上上传文件,它在本地主机上成功,工作正常,我可以轻松地将文件上传到服务器。 但是当我的代码在服务器上运行时,它没有获得 uploaded.I 授予我从中获取图像或文件的文件夹的读写权限。 这是我的卷曲代码:

 $c = curl_init();
        curl_setopt($c, CURLOPT_URL, $url);
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        if($api_type == 2){
            //$mm = array("message" => $message);

            $message = str_replace("\n", "\n", $message);
            $message = '{"message":"'.$message.'"}';

            curl_setopt($c, CURLOPT_HTTPHEADER, array(
             'Content-Type: application/json',
            ));
            curl_setopt($c, CURLOPT_POST, 1);
            curl_setopt($c, CURLOPT_POSTFIELDS,$message);
        }
        if($api_type == 3 & $attachment != NULL){
            $data = array( 'file' => '@'.self::basePath().'/../user_uploads/hipchat_image/'.$attachment);
            curl_setopt($c, CURLOPT_HTTPHEADER, array(
            'Content-Type: multipart/related',
            ));
            curl_setopt($c, CURLOPT_POST, 1);
            curl_setopt($c, CURLOPT_POSTFIELDS,$data);
        }
        return curl_exec($c); 

你可以试试...

curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

取决于 PHP 版本,在 php 5.5 中默认为 false ,在 5.6+ 中默认为 true ...所以请检查本地和网络服务器版本 PHP.

参见:http://php.net/manual/en/function.curl-setopt.php

PHP 7 去掉这个选项curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); 上传文件必须使用CURLFile接口

你可以这样写代码

$data = array('file'=>new CURLFile('/file/path'));

http://php.net/manual/en/function.curl-setopt.php