I am getting mp4 URL from YouTube API with PHP. But it works on local server and not on hosting.
Here is a screenshot of the error I got:screenshot
I am getting mp4 URL of video from YouTube API with PHP. I am using these codes:
<?phpfunction getVideoInfo($video_id){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://www.youtube.com/youtubei/v1/player?key=[key]'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "context": { "client": { "hl": "en", "clientName": "WEB", "clientVersion": "2.20210721.00.00", "clientFormFactor": "UNKNOWN_FORM_FACTOR", "clientScreen": "WATCH", "mainAppWebInfo": { "graftUrl": "/watch?v='.$video_id.'", } }, "user": { "lockedSafetyMode": false }, "request": { "useSsl": true, "internalExperimentFlags": [], "consistencyTokenJars": [] } }, "videoId": "'.$video_id.'", "playbackContext": { "contentPlaybackContext": { "vis": 0, "splay": false, "autoCaptionsDefaultOn": false, "autonavState": "STATE_NONE", "html5Preference": "HTML5_PREF_WANTS", "lactMilliseconds": "-1" } }, "racyCheckOk": false, "contentCheckOk": true}'); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $headers = array(); $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); return $result;}print_r(getVideoInfo("[video_id]"));There is no problem running on local server. I am able to get the mp4 URL of the video. But when I upload the files to the hosting and run it, the URL from the API tells me "This content isn't available." fetches an mp4 file containing the text. How can I solve this? Both are the same code, but what could be the reason why it works on local server and not on hosting?