1

我必须在 cron 任务中放置一个 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");
4

1 回答 1

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");

明确定义路径。

于 2015-11-20T09:48:38.483 回答