【问题标题】:Executing wget via PHP通过 PHP 执行 wget
【发布时间】:2012-05-26 10:11:58
【问题描述】:

我在 php 中使用 wget 命令下载 css 样式表及其依赖项。

exec ("wget -p --convert-links -nH -nd --no-check-certificate http://infidelphia.com/style.css -P /home/devuser/public_html/Tset/");

有一个样式表和几个图像。当我在命令行中执行它时:

wget -p --convert-links -nH -nd --no-check-certificate http://infidelphia.com/style.css -P /home/devuser/public_html/Tset/

我看到其中一个资源有一个 404,但下载后其他一切都很好。

但是当我通过 PHP 执行此操作时,此资源被跳过后的所有内容。有什么方法可以确保跳过失败的下载/错误并下载其余资产?

【问题讨论】:

  • 必须用wget下载文件吗?
  • 嗯,我不知道任何其他方式,你知道吗?当然,我是在 PHP 脚本的上下文中谈论的。我需要通过脚本下载。
  • 看我的回答。希望有用
  • 使用which wget 找到从cmd 行工作的wget 的路径。然后编辑您的 php 以对 wget 使用相同的路径,看看是否能解决问题。祝你好运。

标签: php bash unix wget


【解决方案1】:

有时,我使用php curl来下载文件,例如:

$rutaArchivo = '/home/devuser/public_html/Tset/style.css';
$urlArchivo = 'http://infidelphia.com/style.css';

$fp = fopen ($rutaArchivo, 'w+');
$ch = curl_init($urlArchivo);

curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$this->httpCode = $httpCode;

curl_close($ch);
fclose($fp);

if ($httpCode != 200) {
    unlink($rutaArchivo);
    echo 'Download error, deleting the empty file';    
} else {
    echo 'Download ok';
}

太棒了!

【讨论】:

  • 但这不会让我获得 wget 之类的依赖项(图像等)。
  • 如果您阅读 style.css 并以正则表达式获取图像路径、字体路径等然后下载每个文件呢?
猜你喜欢
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多