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

时间:2016-02-11 11:56:27

标签: php curl yii hipchat

我正在尝试使用Api在服务器上传文件。它在localhost上成功它工作正常我可以轻松地在服务器上传文件。 但是当我的代码进入服务器然后它没有上传。我给读取写入权限到我从中获取图像或文件的文件夹。 这是我的卷曲代码:

 $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); 

2 个答案:

答案 0 :(得分:2)

你可以试试......

curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

根据PHP版本,这默认为php 5.5中的false和5.6+中的true ...所以请检查PHP的本地和Web服务器版本。

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

答案 1 :(得分:1)

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