为了让 PHP 运行,我必须在 Apache 网络服务器上启用 Includes。没有人能真正看到我的 .php 文件,因为当它们被服务器获取时,它们被渲染,而客户端看到的只是 css/html/whatever。它可能只是突出了我对 PHP 的新鲜感。
是否有人可以破坏我服务器的 PHP 呈现部分,以便客户在请求页面时能够看到我的 .php 代码?
如果这可能发生,我可以采取哪些预防措施来确保我的商业代码保持闭源?
同样,这可能不是真正的问题,但我很想知道。
最佳答案
正如其他人所说,将 .php 文件视为纯文本的配置错误的 Web 服务器将很乐意提供您的源代码。
然而,现在大多数框架(公共(public)的或内部的)都在网络可访问区域中保留很少的 php 代码。通常,文档根目录中只有一个 index.php 文件,它包含和调用完全位于文档根目录之外的其他文件中的代码。
通常,你会有这样的东西:
/path/to/proj/ <-- your project root
/path/to/proj/application <-- holds most of your appication code
/path/to/proj/lib <-- third-party libraries go here
/path/to/proj/public <-- your web server uses this as the document root.
/path/to/proj/public/index.php <-- single point of entry into your applicaiton. all requests are routed through here.
/path/to/proj/public/images <-- static resources, like images, also live under the docroot.
重写规则通常用于通过一个公共(public) index.php 文件编码任何请求。
有了这样的设置,如果您的网络服务器配置错误,导致它传输您的代码,您就完全可以避免了。唯一的泄漏是您的 index.php 文件,它可能是几个 include/require 语句和单个函数/方法调用。一点都不敏感。
查看标准 Zend Framework 或 Symfony(或任何框架,真的),文件布局,以获得更清晰的画面。
关于php - 如果渲染失败,人们能看到我的 PHP 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616286/