我正在尝试创建一个将发送每周简报的cron作业。我尝试按照Cakephp manual所说的创建一个shell任务。然后我去Media Temple Cron工作并键入以下内容:
php /home/#####/domains/domain.com/html/cake/console/cake -app /home//#####//domains/domain.com/html/vendors/shells newsletter
我在vendors / shell文件夹上创建了shell任务,并将其命名为newsletter.php,这里是代码:
class NewsletterShell extends Shell {
function main() {
$this->sendEmailTo("Newsletter","subject","email@gmail.com");
}
}
sendEmailTo是我在appController中的控制器功能,所以我的所有控制器都可以访问它。
我的问题是每次Cron Job运行时都会收到此消息:
无法打开输入文件:/home/#####/domains/domain.com/html/cake/console/cake
我甚至给了所有的控制台文件(cake.php,cake.bat等)0777读写属性以及vendor / shell / newsletter.php
#####是媒体圣殿给你的网站号,但我不确定我是否正确。他们展示了一个像这样的cron工作的例子:/home/50838/data/script-name.sh
所以我的问题是:
我的蛋糕外壳任务是否正确并且我作为一个cron工作准确运行它的方式?
也有人知道在哪里确认我的媒体寺庙网站号码所以我可以把它写下来作为可能的错误。
提前致谢,
Fabian
答案 0 :(得分:1)
您可以尝试var_dump(ROOT)
或其中任何一个Core Definition Constants来查找您的目录。只需将它放在某处的控制器方法中,但请务必再次将其删除。或者,如果您具有SSH访问权限,请在命令行上执行pwd
。
除此之外,在调用cake
控制台任务时,-app
参数应该指向app
目录,而不是shells
目录。
尝试使用this script将shell作为cron作业运行,可能会有一些缺少shell变量。
答案 1 :(得分:0)
ls -l /home/#####/domains/domain.com/html/cake/console/cake
说什么? cron作业是以用户#####运行的吗?如果没有,问题可能是/ home / ##### /上的权限,请用
检查ls -ld /home/#####/
答案 2 :(得分:0)
您是否在“cake / console”目录中提供了“cake”文件可执行权限以及cake.php和cake.bat?
cron命令应为:
php /home/#####/domains/domain.com/html/cake/console/cake newsletter -app /home/#####/domains/domain.com/html/app