我收到了这条消息:
Deprecated: curl_setopt_array(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead
我知道我可以使用CURLFile
类重写我的代码,但它只能从5.5中获取。
我的网站必须在PHP 5.3,PHP 5.4或PHP 5.5上运行,因此我无法降低5.3和5.4的兼容性。所以我不能使用CURLFile。
如何在没有任何PHP版本检查的情况下重写代码以使其在任何PHP上运行?
答案 0 :(得分:11)
我找到的最佳解决方案是/src/Guzzle/Http/Message/PostFile.php:
public function getCurlValue()
{
// PHP 5.5 introduced a CurlFile object that deprecates the old @filename syntax
// See: https://wiki.php.net/rfc/curl-file-upload
if (function_exists('curl_file_create')) {
return curl_file_create($this->filename, $this->contentType, $this->postname);
}
// Use the old style if using an older version of PHP
$value = "@{$this->filename};filename=" . $this->postname;
if ($this->contentType) {
$value .= ';type=' . $this->contentType;
}
return $value;
}
答案 1 :(得分:5)
我相信这将允许您使用旧的方式而不会发出警告(如果只是通过@
抑制是不可接受的):
curl_setopt($curl_handle, CURLOPT_SAFE_UPLOAD, false);
请参阅here