从远程php文件更新本地php文件

时间:2016-01-05 07:54:22

标签: php curl file-get-contents

我正在为将要为许多客户端安装的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文件的内容可能通过赋予远程特殊权限连接?

感谢。

1 个答案:

答案 0 :(得分:2)

您应该在远程服务器上创建一个下载脚本,它将使用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);
?>

通过http://example.com/download.php?file=fileName

获取文件内容