Soundcloud API上传突然抛出代码422



使用PHP Soundcloud API已经有一段时间了,而且运行良好。我用来创建轨道阵列的代码是(并且一直是):

$track = json_decode($client->post('tracks', array(
  'track[title]' => $title,
  'track[asset_data]' => $filename,
  'track[description]' => $desc,
  'track[genre]' => "Podcast",
  'track[artwork_data]' => $image
)));

它一直运行得很好——直到今天早上,当我使用自制的PHP工具上传曲目时,收到了这个错误消息

致命错误:在/home/cicon/public_html/PodcastAuthor/lib/Soundcloud.php中出现未捕获的异常"Services_Soundcloud_Invalid_Http_Response_Code_exception",消息为"请求的URL响应了Http代码422。":943堆栈跟踪:#0/home/csicon/public_html/PodcastAuthor/lib/Soundscloud.php(621):Services_Soundcloud->_request('https://api.sou...',Array)#1/home/cicon/public_html/PodcastAuthor/2-publish.php(52):Services_Soundcloud->post('tracks',Array)#2{main}在第943行的/home/csin/public_html/PodcastAuthor/lib/Soundcloud.php中抛出

现在,我不是新手,知道HTTP代码422的全部内容,所以我检查了$title、$filename、$desc和$image的内容。它们按顺序是:

Geekdays #274: 2015-11-17
@/home/csicon/public_html/PodcastAuthor/uploads/g274.mp3
Snowden, the FBI and the Oxford Dictionary are getting blamed for things that they may or may not have done. Also; the air you're breathing might be killing you. This, and so much more, on today's episode of Geekdays.
@/home/csicon/public_html/wp-content/uploads/2014/10/geekdays-600x600.png

所有路径(到mp3和图像)都检查过了,所使用的字符集没有任何不稳定的地方,而且以前都工作过。这里可能发生了什么?我被难住了。

更新事实证明,我的网络主机已经将他们的PHP环境从5.4升级到5.6,这就是破坏它的原因。在这种情况下,5.4和5.6之间发生了什么变化,可能导致了这种情况?

事实证明,我的网络主机已经将他们的PHP环境从5.4升级到5.6,这就是破坏它的原因。在这种情况下,5.4和5.6之间发生了什么变化,可能导致了这种情况?

cURL文件上传的处理方式发生了变化。

从PHP 5.6开始,默认情况下CURLOPT_SAFE_UPLOAD设置为true,这意味着文件上传不再可以使用@-文件路径语法,但文件上传应该使用CURLFile

尝试使用setCurlOptions方法将CURLOPT_SAFE_UPLOAD设置为false

当我切换到curl文件分支的sebdesign/php-soundcloud版本时,Magically开始工作。但是,不确定为什么"正常"的curl文件分支不起作用。

最新更新