Загрузите исполняемый файл .phar с php и curl

Я пытаюсь сделать PHP-скрипт, который загружает исполняемый файл с curl. Пока я могу скачать файл, но после загрузки файл не исполняется (т.е. если вы запускаете php wp-cli.phar Ничего не произошло). Я понимаю, что это ожидаемое поведение для предотвращения угроз безопасности, поэтому как мне указать curl, что я хочу, чтобы загруженный файл рассматривался как исполняемый файл? Эквивалентная команда из командной строки: curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Это мой код, который пытается реализовать вышеуказанную команду в php-скрипте, но полученный файл не является исполняемым:

set_time_limit(0);
$fp = fopen ('./wp-cli.phar', 'w+');
$ch = curl_init('https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar');
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Если вы хотите воспроизвести ошибку, создайте файл с именем a.php с содержанием выше. Тогда беги php a.php а потом беги php wp-cli.phar --info

0

Решение

Попробуйте этот код ниже, это то, что мы сейчас используем для загрузки файлов с URL.

public function  downloadFile($url, $filepath){
$fp = fopen($filepath, 'w+');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
curl_close($ch);
fclose($fp);

return (filesize($filepath) > 0)? true : false;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector