有没有办法直接从 cPanel 的文件管理器中的 URL 上传文件
Posted
技术标签:
【中文标题】有没有办法直接从 cPanel 的文件管理器中的 URL 上传文件【英文标题】:Is there any way to upload file directly from URL in filemanager of cPanel 【发布时间】:2014-05-14 10:19:08 【问题描述】:这可能是一个非常常见的问题,但我搜索了很多,最后决定获得一些专家的建议。
我想知道是否有人将文件直接从 URL 上传到 cPanel 文件管理器。我可以使用文件管理器中的上传选项卡从计算机上传文件,但找不到从 URL 提取数据的任何选项。
我尝试了几个论坛、问答网站,但一无所获。如果有人能将这个问题引起专家的注意,我将不胜感激。
我看过
http://forums.cpanel.net/f145/filemanager-upload-url-215911.html
http://forums.cpanel.net/f5/upload-via-url-305691.html
和我的其他地方,但除了问题之外什么也没找到。
【问题讨论】:
【参考方案1】:是的,当然有办法
你可以在你的 ssh 控制台中使用“wget”
只需打开您的 ssh 控制台 输入 wget 命令: 例如:wget ;
你就完成了
【讨论】:
感谢您的回复。我想我没有启用 SSH。有什么办法可以从 cPanel 本身..? 这没有回答所提出的问题。许多 cPanel 用户没有 shell 访问权限。【参考方案2】:我也有这个问题。以慢速连接下载然后再次上传对我来说不是一个选择。
目前没有任何方法可以通过 cPanel 文件管理器执行此操作。如果您无权访问 SSH,您可以像这样绕过它:
-
在文件管理器中创建一个新文件,将其命名为
get1.php
或其他任何名称,并将其放置在您的域中可以访问的位置。
在get.php中编辑文件管理器中的文件,并输入以下代码:<?php exec("wget http://domain.com/path-to-file.zip"); ?>
现在在浏览器中导航到您在步骤 1 中创建的文件,因此它可能是 http://domain.com/get1.php
等等。页面可能会返回 500 错误,没关系,wget 命令应该仍然可以通过。 在文件管理器的 cPanel 中重新加载您放置 get1.php 的目录,您将看到该文件在那里等着您。完成。当然,这是非常不安全的,因为任何机器人或人都可以请求您的 get1.php 文件,因此请确保在完成后将其删除。这只是一个简单的 hack,欢迎任何更好的想法。
【讨论】:
这是一个有效的解决方法。但是,一些托管服务提供商可能会禁用“exec”,这将阻止它工作。如果它适用于您的情况,为了提高策略的安全性,请在带有 NOINDEX 的目录中创建 PHP 脚本文件(最好为此创建您自己的目录;如果您在浏览器中导航到该目录 URL并且看不到包含的文件,那么没有机器人可以扫描它),并使用复杂的文件名。当然,完成后记得删除文件。 虽然这不是我一直在寻找的,但它是很好的答案。我会等待其他人可能有更好的建议。感谢@cowb0y 对答案和问题的敏锐评论感谢 BlissOfBeing 提供了一种解决方法。 :) 仅供参考,有一个 cPanel feature request 添加这个。您可能想要订阅该请求并对其进行投票。我唯一的另一个想法是,您可以使用托管在 cPanel 帐户上的 CMS 来传输文件,或创建 a PHP script to do so(但请仔细考虑安全隐患;永远不要让方便的黑客“闲逛”让别人发现) . 这对我不起作用,即使它看起来很简单。【参考方案3】:您可以使用RapidLeech。这是一个“传输”文件(服务器到服务器)而不是上传的 CMS。但是主机通常会禁止您使用 RL,因为它消耗太多资源。但它有非常酷的功能。您可以直接获取任何屏幕大小的 Youtube 视频,也可以通过提供您的帐户信息将文件传输回著名的文件上传网站,例如 4shared。
【讨论】:
【参考方案4】:我遇到了同样的问题。我无法上传一些需要从一台服务器传输到另一台服务器的大文件。 FTP 和 cPanel 文件管理器都失败了。我创建了一个 upload.php 文件(扩展了上面提供的解决方案)并将其复制到目标目录。我简直不敢相信这种技术的效果有多快! 50MB 的文件实际上需要几秒钟。这是我的 php 文件的内容:
<!DOCTYPE html>
<html>
<head>
<title>Upload file from URL</title>
</head>
<body>
<?php
$BASE_URL = strtok($_SERVER['REQUEST_URI'],'?');
if (isset($_POST['url']))
$url = $_POST['url'];
echo "Transferring file: $url<br>";
exec("wget $url");
?>
<form name='upload' method='post' action="<?php echo $BASE_URL; ?>">
<input type='text' id='url' name='url' size='128' /><br>
<input type="submit" value="Upload">
</form>
</body>
</html>
在我完成文件传输后,我总是从服务器上删除这个 php 文件,以免给潜在的黑客一个简单的方法来替换我服务器上的文件。请不要忘记这重要的一步!
【讨论】:
【参考方案5】:使用的脚本和说明来自 PHP Url File Remote Uploader No Size Limit 并进行了一些更改以提高安全性,
这是最终结果:
说明:
-
创建一个目录并将下面的代码粘贴到名为
index.php
的文件中
在创建的目录中创建另一个名为files
的目录,并将其更改权限为766
(这可以防止黑客上传php文件并可能对您进行黑客攻击,您仍然可以从cpanel访问该文件,但您无法从您的浏览器,如果您想从浏览器下载它,请将权限更改为777
,但请记住将其更改回或删除文件)
享受
<title>Remote Upload</title>
<center>
</br</p></br</p><form method="post">
<input name="url" size="50" />
<input name="submit" type="submit" />
</form>
<b>Instruction:</b>
</p>Sample values for ftp and http
</p>ftp://username:password@example.com/path/to/file.png
</p>ftp://example.com/path/to/file.png
</p>http://www.example.com/path/to/file.png
<?php
// maximum execution time in seconds
set_time_limit (24 * 60 * 60);
if (!isset($_POST['submit'])) die();
// folder to save downloaded files to. must end with slash
$destination_folder = 'files/';
$url = $_POST['url'];
$newfname = $destination_folder . basename($url);
$file = fopen ($url, "rb");
if ($file)
$newf = fopen ($newfname, "wb");
if ($newf)
while(!feof($file))
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
if ($file)
fclose($file);
if ($newf)
fclose($newf);
?>
</center>
【讨论】:
【参考方案6】:在您的目录中创建一个新的 .php 文件并将下面的代码粘贴到其中。
运行脚本后,它会上传到一个名为 test.zip
的文件中<?php
copy("YOUR_URL", "test.zip");
?>
【讨论】:
这对禁用 exec() 的共享主机提供商起到了作用以上是关于有没有办法直接从 cPanel 的文件管理器中的 URL 上传文件的主要内容,如果未能解决你的问题,请参考以下文章
我在 cpanel 上的 django 网站没有加载我的媒体文件(从管理员上传的图像)但是当 DEBUG=False 时我的所有 stacticfiles(css 等)都可以工作