我的合作伙伴说我不需要回答这个问题,所以为了证明我的观点,我删除了php并模拟了服务器问题。嘿presto,网络服务器提供PHP源代码下载。
所以,问题是,有没有办法在发生服务器故障,错误或暂时失去与相关模块等的连接时停止提供源?
答案 0 :(得分:3)
显示源的唯一方法是,如果您通过错误更改服务器配置 - 例如,您正在使用mod_php进行Apache并意外删除模块。
对于这种特殊情况,您可以这样做:
<IfModule php5_module>
AddHandler php5-script .php
PHPIniDir "/etc"
</IfModule>
<IfModule !php5_module>
<FilesMatch "\.php$">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
</IfModule>
答案 1 :(得分:2)
将PHP文件放在文档根目录之外,然后从文档根目录中的PHP文件中获取它们。他们仍然会得到一些像这样或类似的代码,但这不会给他们很多细节:
require(dirname(dirname(__FILE__))."/real_file.php");
答案 2 :(得分:0)
我编写了几个简单的函数来解析一个URL MVC风格(基于kissmvc.com),这是我文档根目录中唯一的php:
<?php
require '../bootstrap.php';
parse_request();
所以,如果确实发生了什么事,那就是所有人都会看到的。其他所有内容都是从bootstrap开始处理的。如果我想,我也可以将parse_request()移动到bootstrap.php中,但是我这样做了所以我可以包含我的引导程序而不是发送所有网站的东西,如果我只是打一个cron脚本(这是在我意识到php_sapi_name()函数和常量之前。
如果你在docroot中有一个带有php的现有站点,或者正在使用Wordpress等,这没有用,但是如果你有选择,它将阻止这个特定的问题在男孩中踢你。