下载一个带有 php 和 curl 的可执行 .phar 文件



我正在尝试制作一个下载带有curl可执行文件的php脚本。到目前为止,我可以下载该文件,但是下载后,该文件不可执行(即,如果您运行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

试试下面的代码,这是我们目前用来从 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;
}

最新更新