【问题标题】:CakePHP Console on Godaddy HostingGodaddy 主机上的 CakePHP 控制台
【发布时间】:2011-04-02 08:11:58
【问题描述】:

我一直在努力让我的 CakePHP 网站在 Godaddy“网格托管”帐户上运行。我的蛋糕应用程序设置在帐户的子目录中,并且可以通过子域访问。我必须调整我的 .htaccess 文件才能让它工作,现在我需要让 CakePHP 控制台在这个环境中工作。

我在托管在 Amazon 的 EC2 服务上的 Ubuntu 服务器上设置了相同的蛋糕应用程序。基本上是开箱即用的 Ubuntu LAMP 设置。 CakePHP 控制台在此环境中按预期工作。

当我尝试在 Godaddy 上运行控制台时,我收到以下消息:

CakePHP 控制台:此文件已错误加载,无法 继续。请确保 /cake/console 在您的系统中 路径,并检查手册以了解此的正确用法 命令。(http://manual.cakephp.org/)

我已经开始在 cake/console/cake.php 中添加一些调试代码以了解发生了什么。在 godaddy 网站上,当我在第 183 行回显 print_r($this->args) 时,我发现数组是空的。当我在我的 Ubuntu EC2 实例上执行此操作时,我得到了:

Array
(
    [0] => /var/www/www.directory.sdcweb.org/htdocs/cake/console/cake.php
)

看起来 Godaddy 的命令行 PHP 没有通过 bash shell 命令行参数。有人对我如何让 CakePHP 控制台在 Godaddy 上工作有什么建议吗?

调用 Cake shell 的 bash 脚本包含以下内容

LIB=${0/%cake/}
APP=`pwd`

exec php -q ${LIB}cake.php -working "${APP}" "$@"

exit;

我在想修改这个脚本可能会解决问题。

【问题讨论】:

  • 命令行参数没有被传入...我不确定这是什么原因...并且在 cake.php 的顶部有一条到 /usr/bin/ 的路径php 但它位于 Godaddy 上的 /usr/local/bin/php。我可能可以解决这个问题。
  • 好吧,register_argc_argv 设置为 Off,这可能是没有传入 cmd 行参数的原因。

标签: php linux bash cakephp


【解决方案1】:

“请确保 /cake/console 在您的系统路径中。”

这是网格托管,所以我假设您有一个可以编辑的 .bashrc 文件。首先你需要知道你的 cake 子目录的绝对路径,然后使用 vim 或 nano 来编辑你的 .bashrc

PATH=$PATH:/absolute/path/to/cake/console

然后您可以注销并重新登录,您应该可以在任何地方输入 cake bake 并且它应该会修复您收到的错误(从您的应用程序目录运行它,以便它可以找到您的 database.php)。

如果 .bashrc 文件失败,您可以临时导出变量,但每次登录时都必须输入。

【讨论】:

  • 似乎我的 PATH 是正确的。当我在 cmd 行中回显 PATH 时,它看起来是正确的,并且我可以从任何目录运行 cake 命令,总是收到“此文件已错误加载”消息。
【解决方案2】:

在 cake shell 脚本(cake/console/cake)中更改

exec php -q ${LIB}cake.php -working "${APP}" "$@"

exec php -q -d register_argc_argv=1 ${LIB}cake.php -working "${APP}" "$@"

在这之后,我发现像这样调用 php 恰好运行 PHP 4 CLI。在这里解决这个问题是我用来在我的共享 Godaddy 主机上调用 PHP 5 的最终 bash 脚本

exec /web/cgi-bin/php5 -q -d register_argc_argv=1 ${LIB}cake.php -working "${APP}" "$@"

如果你通过他们的主机控制面板设置一个基于php的cron作业,你会发现调用的php命令实际上是这个php5可执行文件。

【讨论】:

【解决方案3】:

我不认为编辑 lib/cake 中的任何内容是可以的,因为它会随着您的第一次蛋糕更新而消失。

相反,我通过添加以下行更改了 php.ini 中的 register_argc_argv 设置:

register_argc_argv=On

现在似乎一切都对我有用。

【讨论】:

  • 这适用于我使用 WHM php.ini 编辑器。我已经更新到 PHP7,并且更新更改了指令。 (简单的 Apache 4)。
猜你喜欢
  • 2019-09-06
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2023-04-05
相关资源
最近更新 更多