我正在尝试制作一个下载带有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;
}