[英]Deploy PHP website to client server without showing PHP files
我问了一个有关使用readfile()远程执行PHP的最新问题,但也许最好还是提出一个问题,看看我是否对事情的想法是错误的,所以这里是:
我曾想过通过从客户端服务器到我的服务器调用include()来做到这一点,这至少会使变量范围保持完整,但是许多站点(和PHP文档)似乎都建议使用readfile(),file_get_contents()或类似的东西。 理想情况下,我想在客户端的服务器上为服务器上的每个“真实”文件创建一个简单的包装文件。
关于如何完成我需要的任何建议?
谢谢,ColmF
根据建议,评论发布为答案并修改了修饰
PHP是一种解释性语言,因此可以“读取”文件并进行解析。 是的,它可以在某些情况下存储缓存的字节码,但是与字节码中编译和工作的高级语言不同。 这意味着php“编译器”需要您的实际源代码才能工作。 查看zend.com/en/products/guard,尽管我相信这意味着您的客户端必须使用Zend Server,但它可能会做您想要的事情。
未能与该公司签订合同,其中包含不重复使用您的代码等的条款。在这种情况下,这是您的最佳保护。 但是,您还应该小心,如果您使用的是“开放源代码”许可下的任何内容,则整个应用程序都可能被视为开放源代码,因此这完全没有意义。
对于许多公司而言,这不是一种非标准的做法。 我已经制作了令我特别骄傲的软件,并且公司希望使用它。 由于他们出于“个人”原因或因为必须遵守PCI等标准而相信自己的信息安全,因此有时我的应用程序必须在其环境中运行。 我已将我的产品提供为“网络服务”,它们在其中向我的服务器查询数据并接收响应。 在那种情况下,我的源代码受到完全保护,因为这与任何其他封闭的API都没有什么不同。 在每种情况下,我均已将副本许可给客户,但规定他们不得修改或分发该副本。 这是具有法律约束力的合同,完全可以从客户的角度进行预期。 当然,有些条款规定我会提供支持等,但这既不是这里也不是那里。
简短的答案:
祝好运!
如果他们希望将其完全包含在服务器中,那么最好的选择是合法解决方案,而不是技术解决方案。
您向他们授权了该软件,并确保合同规定该知识产权归您所有,并且未经事先许可就无法复制/分发(显然,您需要一些比这更好的法律条款,但您知道了)。
建议您不要使用远程执行,而应使用PHP源保护系统,例如Zend Guard,ionCube或sourceguardian。
我认为您将很难解决这个问题,除非您想要某种有趣的包装程序来curl
对服务器的类型请求。 特别是在处理会话和cookie之类的内容时。
您确定PHP混淆器不足以完成您的工作吗?
基本上,您正在寻找一种将应用程序代理到远程服务器(即客户端)的方法。 在客户端站点上使用readfile()
类的东西很好,但是您仍然需要在其末端使用多个脚本。 基本上, readfile
刮擦特定文件路径或URL上可用的内容,并将其通过管道传递给最终用户。 因此,如果我要执行readfile('google.com')
,它将输出Google主页的源代码。
假设您不只是希望在客户的站点上使用虚拟表单,您将需要在其末端使用一些代码。 该代码将不得不拦截表单提交(因此,在要使用readfile
进行抓取的页面上,您将需要一个URL参数,以告诉您代码表单提交URL是您客户的网站,而不是您自己的网站)。 此页面(表单提交处理程序页面)将需要回拨到您自己的站点。 这样想:
readfile("https://your.site/whatever?{$_SERVER['QUERY_STRING']}");
然后,您的站点将处理响应,然后将所有内容传递回客户的站点。
希望我能使您走上正确的道路。 让我知道是否不清楚; 我意识到这是很多信息。
而不是自己托管它,为什么不执行大多数php应用程序的工作,而仅通过自动更新功能将程序分发给您的客户端呢? 自己托管它很复杂,从网站管理到由谁付费托管。
如果您不希望分发它,请找到允许您执行此操作的预写许可证。 如果找不到,那就该和律师谈了。
您不能阻止他们看到您的代码。 您可能会让他们很难理解您的代码,这是第二好的选择。 参见SD PHP混淆器 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.