【问题标题】:Update local php file from remote php file从远程 php 文件更新本地 php 文件
【发布时间】:2016-01-05 07:54:22
【问题描述】:

我正在开发一个将为许多客户安装的 CMS,但随着我不断改进它,我对一些文件进行了修改。我希望这些更新能够自动应用于使用相同文件的所有项目。

我想在每次打开 CMS 时执行一个检查文件。该文件会将本地文件的版本与远程文件的版本进行比较,为此我可以为版本保留日志或其他内容,没什么大不了的,但这不是问题,这是我想到的一些示例代码:

$url = 'http://www.example.com/myfile.php';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$data = curl_exec($curl);
curl_close($curl);

问题是获取 myfile.php 的内容,因为它是一个 PHP 文件,服务器将执行它并返回输出,但我想要文件的实际内容。我知道这是不可能的,因为这将是一个安全问题,任何人都可以获取其他站点的 php 代码,但是有没有办法通过授予远程特殊权限来获取远程 php 文件的内容连接?

谢谢。

【问题讨论】:

  • 您应该在您的服务器上创建一个下载脚本,该脚本使用 readfile() 来读取和输出文件内容。使用本地服务器中的文件名调用此脚本,例如 remote.tld/download?file=anyFileYouNeed.php
  • 好主意!!!将其添加为答案。

标签: php curl file-get-contents


【解决方案1】:

您应该在远程服务器上创建一个下载脚本,该脚本将使用 readfile() 返回原始 php 代码。

<?php
$file = $_SERVER['DOCUMENT_ROOT'] . $_GET['file'];

// @TODO: Add security check if file is of type php and below document root. Use realpath() to check this.
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($file);
?>

通过fethcing http://example.com/download.php?file=fileName获取文件内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多