我必须在syron任务中放入一个symfony命令。 我不在专用服务器中,所以我必须从OVH管理器界面创建它们。
我的问题是我无法在其中编写命令,只给它一个文件来执行。
我尝试了多个解决方案,但没有一个正在运行。 经过与OVH支持的大量讨论,以及他们的许多错误和愚蠢的答案(这种支持真是太可惜了!),我仍然不明白为什么我的cron没有工作。
我做了什么,并且从浏览器中完美运行的是我将以下行放在php文件中:
exec("/usr/local/php5.4/bin/php app/console my:command");
我知道这不是一个好方法,但这是唯一有效的方法:/
问题是这个从浏览器工作的php文件不能用于cron任务。
有人看到了合乎逻辑的解释吗?
感谢您的回答
纪尧姆
编辑
这是我的crontab:
cronCache.php是我放的地方:
exec("/usr/local/php5.4/bin/php app/console my:command");
当我访问www.myurl.com/cronCache.php时,该命令可以正常工作
编辑2
解决了这个问题。应用程序/控制台的路径是错误的,我没有找到它。我不得不这样说:
exec("/usr/local/php5.4/bin/php /home/my-server-name/www/app/console my:command");
答案 0 :(得分:0)
是。如果只是将/usr/local/php5.4/bin/php app/console my:command
放在crontab中,则执行的上下文不在您的应用程序路径中,而是在服务器用户的主目录中。
准确地说,app/console
文件夹不在您的用户主页中,而是在您的项目中。只需使用您输入的代码在项目根文件夹中创建一个php文件,然后从crontab
或通过以下方式更改您的命令:/usr/local/php5.4/bin/php [your/project/path]/app/console my:command
编辑:
我有更多解决方案:
首先,您的cronCache.php
服务器上的用户是否具有执行权?在这类服务器上,只有www-data用户可以在www文件夹中拥有此权限。
第二种选择: 尝试通过以下方式更改您的exec命令:
exec("/usr/local/php5.4/bin/php ./app/console my:command");
明确定义路径。