1

情况如下:

我在我的域电子邮件(所以 *@domain.com)上有一个包罗万象的重定向到位于 /home/domain/scripts/piper.php 的管道脚本。这个 piper 脚本不在 Kohana ORM 中,但我所有的其他文件都在。我想尝试在这个 piper.php 文件中使用 Kohana。

我已经尝试(不成功)以下所有方法:

包括小花

我不知道需要包含什么,更重要的是如何覆盖 Kohana 用来确定正确控制器的 url 变量。此外,这是一个包罗万象的 piper,因此它不使用 HTTP(据我所知),而是执行命令。

管道

我尝试了以下管道:

/home/domain/public_html/index.php --uri="piper"

但是 cPanel 使这成为不可能,因为您只能指定目标脚本,而不能指定正确的标志等(除非我遗漏了什么)。

PHP 执行()

我尝试使用以下行:

exec("php /home/domain/public_html/index.php --uri=\"/piper\"")

我希望标准输入数据将在 exec() 命令中得到维护,但我永远无法让它识别 uri 命令,尽管我可以在我的本地主机上运行它并且它工作得很好。

我使用http://www.coderelic.com/2011/10/creating-cron-jobs-in-kohana-3-x-is-a-piece-of-cake/作为参考,但无法获得任何工作。

我对这些解决方案中的任何一种都感到满意,这样我就可以看到收到的电子邮件,对其进行解析,然后根据参数发送电子邮件。

如果您需要更多信息,请与我们联系!我很难过。

4

3 回答 3

0

/home/domain/public_html/index.php --uri="piper"将是一种有效的方法。如果您的主机很糟糕并且不允许您指定它,请将其放入 bash 脚本中并引用它。

如果您使用的是任何最新版本的 kohana(3.2 或 3.3),更好的方法是使用 Minion 运行命令行任务。这就是 Minion 的设计目的。

于 2012-11-06T13:04:48.227 回答
0

您需要做的就是:

  1. 将您的脚本修改piper.php为有效的 PHP 类;
  2. 放在/application/classes/文件夹里;

includeKohana 将在初始化期间自动加载您的类文件(如)。

然后,您可以piper像往常一样使用您的课程$piper = new Piper; ...

UPD

您必须通过 Kohana 发送电子邮件。

例如,创建控制器(使用URLpipe路由):/pipe

public function action_pipe() {

    $pipe = new Pipe; // This creates new Pipe object (your emails serving class)

    $pipe->serve(); // Sserve emails within `serve()` method of Pipe class

}
于 2012-11-06T10:28:04.520 回答
0

尽管不可否认,我不确定这些其他答案是否正确,因为我无法弄清楚如何重现结果。

最终为我的情况工作的是创建一个Controller_Piper/home/domain/scripts/piper.php. 我所做的是从中复制代码/home/domain/public_html/index.php并更改以下内容:

echo Request::factory("/piper")
->execute()
->send_headers(TRUE)
->body();

这会加载piper控制器并很好地执行所有内容。不确定它是否是最干净的,但它确实有效。

于 2012-11-07T22:03:36.363 回答