在同一服务器上以PHP加载CI控制器

时间:2010-03-31 18:50:37

标签: php codeigniter

如何在同一台服务器上的常规PHP页面中包含CodeIgniter内容,但不包含CI应用程序的一部分?

例如,我正在尝试将CI中的标头加载到Wordpress中。什么是在同一台服务器上包含CI控制器(例如; index.php / mycontroller / header /)的最佳方法?

4 个答案:

答案 0 :(得分:1)

使用PHP的内置file_get_contents()。只需确保使用完整的HTTP路径,而不是相对路径。例如:

<?php
  file_get_contents('http://your.server.com/codeigniter-path/controller/');

这应该可以解决问题。

答案 1 :(得分:1)

来自http://codeigniter.com/forums/viewthread/88635/

这是过度的,因为file_get_contents($ url)或类似的会更好。但是,它可能适用于您的情况:

$CI_INDEX = '/path/to/your/codeigniter/index.php';
$path = '/controller/method';
$_SERVER['PATH_INFO'] = $path;
$_SERVER['REQUEST_URI'] = $path;

chdir(dirname($CI_INDEX));
ob_start();
require($CI_INDEX);
$output = ob_get_contents();
ob_end_clean();
die($output);

答案 2 :(得分:0)

您是否考虑在Wordpress页面中使用iframe?

<iframe src="http://my-site-url/index.php/mycontroller/header"></iframe>

这可能是最简单的解决方案。

答案 3 :(得分:0)

当您尝试使用外部源的HTML包装内容时,可以通过在目标站点中放置HTML注释(或其他可识别的标记),然后使用PHP来拆分/分解内容来轻松实现。

我已经使用这种方法为MSN Money创建了几个微站点。然后我会简单地使用:

list($header_html) = explode('<!-- Header -->', file_get_contents($url));

它稍微复杂一点,包括缓存和各种其他疯狂,但在它的基础上,如果WordPress允许它使用的方法。