我在同一个网络服务器上安装了许多网站。我想做的是能够包含来自不同网站的相同文件
<?php include '/home/site/www/path/to/file.php'; ?>
并同时阻止诸如 highlight_file 和 file 这样的功能,因此使用以下代码不会显示我的文件内容
<?php echo hightlight_file('/home/site/www/path/to/file.php'); ?>
任何帮助将不胜感激。
如果您希望您的 PHP 文件可运行但不被读取,您最好的选择是对它们进行编码。
看看IonCube PHP Encoder和SendGuard,它们都是保护源代码的非常流行的选项。
阻止 PHP 函数可以工作,但你永远不会安全,因为你可能会忘记函数(你真的能把它们都列出来吗?如果你真的需要一个呢?),或者将来可以添加新函数,如果你不这样做阻止他们你会被暴露。
...因此使用以下代码不会显示我的文件内容
这是否意味着您希望允许其他人在调用您的代码的服务器上部署代码而不泄露 PHP 源代码?如果是这样,那么禁用 highlight_file 不会有太大帮助。您还需要禁用 include、require、fopen、file_get_contents、imap 扩展和其他一些东西——这意味着它们根本无法访问您的代码。
如果您让您不一定信任的其他人在您的服务器上部署代码,那么您需要做很多事情来隔离每个帐户 - 这不是一个简单的练习,并且远远超出了这里的答案范围。但是,如果不提供对源代码的访问权限,就不可能允许访问共享的包含文件。使用编码的 PHP 解决了一些问题,但引入了其他问题。更好的解决方案是通过 Web 或套接字 API 公开功能(这解决了共享问题,但没有解决隔离问题)。