Godaddy主机上的CakePHP控制台

Godaddy主机上的CakePHP控制台,php,linux,bash,cakephp,Php,Linux,Bash,Cakephp,我一直在努力让我的CakePHP站点在Godaddy“网格托管”帐户上运行。“我的蛋糕”应用程序安装在帐户的子目录中,可以通过子域访问。我必须调整我的.htaccess文件以使其工作,现在我需要使CakePHP控制台在这种环境中工作 我在Ubuntu服务器上安装了同样的cake应用程序,该服务器托管在Amazon的EC2服务上。基本上是一个简单的开箱即用的Ubuntu灯设置。CakePHP控制台在这种环境中按预期工作 当我尝试在Godaddy上运行控制台时,我收到以下消息: CakePHP控制台

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

我在Ubuntu服务器上安装了同样的cake应用程序,该服务器托管在Amazon的EC2服务上。基本上是一个简单的开箱即用的Ubuntu灯设置。CakePHP控制台在这种环境中按预期工作

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

CakePHP控制台:此文件加载不正确,无法访问 继续。请确保/cake/console在您的系统中 路径,并检查手册以了解此选项的正确用法 命令。()

我已经开始在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上工作,有人有什么建议吗

调用蛋糕外壳的bash脚本包含以下内容

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

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

exit;
我认为修改此脚本可以解决问题。

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

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

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

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

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

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

在此之后,我发现像这样调用php碰巧运行了PHP4CLI。要解决这个问题,这里是我在共享Godaddy主机上调用PHP5时使用的最后一个bash脚本

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

如果您通过托管控制面板设置基于php的cron作业,您会发现调用的php命令实际上是针对此php5可执行文件的。

我不认为在库/蛋糕中编辑任何内容都可以,因为它将随第一次蛋糕更新一起消失

相反,我通过添加以下行更改了php.ini中的
register\u argc\u argv
设置:

register_argc_argv=On

现在一切似乎都对我起作用了

看来我的道路是正确的。当我在cmd行中回显路径时,它看起来是正确的,我可以从任何目录运行cake命令,总是得到“此文件加载不正确”没有传入命令行参数…我不确定原因…在cake.php的顶部有一个指向/usr/bin/php的路径,但它位于Godaddy上的/usr/local/bin/php。我可能可以解决这个问题。嗯,register_argc_argv设置为Off,这可能就是为什么没有传入cmd行参数。您能解释一下register_argc_argv=1背后的原因吗?那太好了!这是PHP声明“我将查找传入的命令行参数”的一种方式。请参阅:这对我使用WHM php.ini编辑器很有效。我已经更新到PHP7,并且指令被更新更改。(简单的Apache4)。
exec /web/cgi-bin/php5 -q -d register_argc_argv=1 ${LIB}cake.php -working "${APP}" "$@"
register_argc_argv=On