我一直在努力让我的CakePHP网站在Godaddy“网格托管”帐户上工作。我的蛋糕应用程序设置是从帐户的子目录托管,可以通过子域访问。我不得不调整我的.htaccess文件以使其工作,现在我需要让CakePHP控制台在这种环境中工作。
我在Ubuntu服务器上拥有相同的蛋糕应用程序设置,该服务器托管在Amazon的EC2服务上。基本上是开箱即用的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;
我认为修改此脚本可以解决问题。
答案 0 :(得分:12)
在蛋糕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可执行文件。
答案 1 :(得分:1)
“请确保/ cake / console在您的系统路径中。”
这是网格托管,所以我假设你有一个.bashrc文件,你可以编辑。首先,您需要知道cake子目录的绝对路径,然后使用vim或nano编辑.bashrc
PATH = $ PATH:/绝对/路径/到/饼/控制台
然后你可以注销并重新登录,你应该能够从任何地方输入蛋糕烘焙,它应该修复你得到的错误(从你的app目录运行它,这样它就可以找到你的database.php)。
.bashrc文件失败,您可以暂时导出变量,但每次登录时都必须输入。
答案 2 :(得分:1)
我不认为在lib / cake中编辑任何东西是可以的,因为它将在你的第一次蛋糕更新时消失。
相反,我通过添加以下行来更改php.ini中的register_argc_argv
设置:
register_argc_argv=On
现在所有人似乎都在和我合作。