Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何在同一服务器上的同一HTTP端口上运行Zend Framework代码和遗留(非ZF)代码?_Apache_Zend Framework_Configuration_Zend Framework2_Zend Framework3 - Fatal编程技术网

Apache 如何在同一服务器上的同一HTTP端口上运行Zend Framework代码和遗留(非ZF)代码?

Apache 如何在同一服务器上的同一HTTP端口上运行Zend Framework代码和遗留(非ZF)代码?,apache,zend-framework,configuration,zend-framework2,zend-framework3,Apache,Zend Framework,Configuration,Zend Framework2,Zend Framework3,我有一个很大的代码库,我正试图最终转换为Zend Framework支持的堆栈 我有时会在有选择的地方编写新模块: 使用遗留路由/初始化/etc继续写入 以某种方式找出如何仅在遗留代码的其余部分与以前一样工作的情况下对新模块使用ZF 这可能吗? 怎么做 为了让您有一个想法,我现在的代码使用专有的多路由文件,其中ZF中的所有内容都通过一个路由器文件 因此,传统代码的调用方式如下: http://legacy:80/index.php?route=product 可能类似于 Zend中间件方法 我

我有一个很大的代码库,我正试图最终转换为Zend Framework支持的堆栈

我有时会在有选择的地方编写新模块:

使用遗留路由/初始化/etc继续写入 以某种方式找出如何仅在遗留代码的其余部分与以前一样工作的情况下对新模块使用ZF 这可能吗? 怎么做

为了让您有一个想法,我现在的代码使用专有的多路由文件,其中ZF中的所有内容都通过一个路由器文件

因此,传统代码的调用方式如下:

http://legacy:80/index.php?route=product
可能类似于

Zend中间件方法

我能够遵循并实现IndexMiddleware类。我可以看到正在调用IndexMiddleware::process方法。但我不确定如何进一步,以及如何让我的遗留web应用程序像以前一样返回数据。 米德尔瓦雷斯滕纳

遗留应用程序-index.php


有很多解决方案。。。取决于你有多少新代码,以及你想要的地址

长话短说,您可以在服务器级别使用别名、重写等,也可以在PHP代码级别使用


例如,您可以使用Zend框架中的index.php,以及通过index.php的默认url路由。然后看看这张照片。我认为,添加一个侦听器来分派旧应用程序是一个很好的方法。您可以在中找到大量侦听器,以使您的代码建立在这些侦听器的基础上。例如,查看中间件侦听器。

您好,谢谢-通过以下操作,我在创建中间件侦听器方面取得了一些进展,但我不确定如何使用MiddlewareListener。您能否建议如何或在何处将其连接到ZF应用程序中?此外,即使我将ZF应用程序设置在与主应用程序相同的目录中,但使用新的子文件夹可能会做得更好,并通过apache虚拟主机在该子文件夹中运行zf2。这样,legacy和zf应用程序就不会直接相互干扰。按照我现在的方式,我不确定是否/如何使用Zend通过中间件应用程序aka过滤遗留应用程序的所有各种各样的HTTP请求/响应,如果我必须在中间件中定义自己的迷你HTTP引擎,只需按原样维护遗留应用程序可能会更简单,放弃中间件方法你能用一个简化的index.php例子更新你的文章吗?所有的请求都通过索引了吗?如果是,您可以在那里而不是在中间件中进行预分派。另一个解决方案有两个独立的项目可以完成,但为了帮助您,我需要知道您是否使用Nginx、Apache或其他东西。在遗留应用程序中,并非所有内容都通过index.php。它遍历URL包含的任何文件。即http://.../my_legacy_module2.php 将在系统上调用一个名为my_legacy_module2.php的文件,我基本上使用apacheSo:如果在一个项目中处理所有内容,基本上只需要将ZF项目放在一个子目录中。假设您的apache文档根目录为/var/www/public,将项目设置为/var/www,将遗留项目设置为/var/www/public,将ZF3公用文件夹设置为/var/www/public/newproject。至少对于composer autoload和chdir,您需要更改index.php中一个目录的路径。另一个解决方案实际上是两个项目,以及ApacheVHost中的一个别名
$module = filter($_GET['p']);
if (!empty($module))
   $inc = 'portal/{$module}.php'; //prep a legacy module
require($inc);  //run module