使用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文件分支不起作用。