如何从命令行下载站点中的文件,用php编写文件
Posted
技术标签:
【中文标题】如何从命令行下载站点中的文件,用php编写文件【英文标题】:how to download a file in a site from command line writing it in php 【发布时间】:2011-07-19 09:04:29 【问题描述】:当我使用 wget 进行下载时,它是成功的,但它不适用于 exec_shell()
或system
然后我尝试使用 curl
这是乔在另一个问题中从this site 告诉我的下载网站的代码
function curl_download($Url)
// is cURL installed yet?
if (!function_exists('curl_init'))
die('Sorry cURL is not installed!');
// OK cool - then let's create a new cURL resource handle
$ch = curl_init();
// Now set some options (most are optional)
// Set URL to download
curl_setopt($ch, CURLOPT_URL, $Url);
// Set a referer
curl_setopt($ch, CURLOPT_REFERER, "http://www.example.org/yay.htm");
// User agent
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
// Include header in result? (0 = yes, 1 = no)
curl_setopt($ch, CURLOPT_HEADER, 0);
// Should cURL return or print out the data? (true = return, false = print)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Timeout in seconds
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// Download the given URL, and return output
$output = curl_exec($ch);
// Close the cURL resource, and free system resources
curl_close($ch);
return $output;
它正在用于下载页面,但我想将其更改为从命令行下载 如果你有更好的建议请告诉我
例如我用这个:
<?php
$output=exec_shell('wget ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz');
?>
当我回应它时它不起作用
但是当我在命令行中输入它时,它会在 /root 上下载它:
wget ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz
【问题讨论】:
wget
和 curl
都可以在命令行中完美运行。您可能需要使用您的 PHP 设置配置 shell_exec
和 system
使用的命令行,以使其也可以与 that 命令行一起使用。但这只是系统配置,与您在问题中输入的 PHP 代码无关。
那么...您是在问如何使用curl
命令行工具而不是PHP?
不,我知道如何从命令行下载我不知道如何在 PHP 中正确执行它
【参考方案1】:
您可以从命令行界面将任何参数传递给您的脚本。但如果没有,您必须在 php 中启用此类功能(只需在命令行中尝试 php -i
)。
要在 php 脚本中使用参数,您应该使用 $argv
数组。例如:
php yourscript.php @987654321@
$url = $argv[1]; //it will contain first parameter passed to your script
curl_download($url);
查看official manual at php.net
【讨论】:
实际上你想要$argv[1]
,因为$argv[0]
始终是脚本本身的名称。以上是关于如何从命令行下载站点中的文件,用php编写文件的主要内容,如果未能解决你的问题,请参考以下文章