Running a PHP script with crontab

我怕爱的太早我们不能终老 提交于 2019-12-01 23:56:09
chris p bacon
  • Most likely, your script inside /var/www/html/cron is owned by www-data user. Depending on your setup the user executing the cronjob doesn't have permissions to run this file.

  • There are no $_COOKIEs on the command line. A cookie is sent by the users browser. As cli isnt a browser, so you can't read the cookies value. Though you could access a users $_SESSION, but that's another story. Have a look here Is it possible to read cookie/session value while executing PHP5 script through command prompt? for further details.

Your cronjob line looks valid, so the problem will be one of above points. To verify the first, try something without the use of $_COOKIE in your file, like simply

mkdir('/var/www/html/cron/testdir');

just to see if the file can be accessed and a directory is created inside above dir. If it can't be accessed, create a new group and add both the current user ( find out with

ls -al

in /var/www/html/cron ) and the user running the cronjob to the group, then make that group own the file you want to run. See the accepted answer on this question: Set user permissions | Artisan command will not run in code but works fine on command line I posted some time back on how to do that.

For the $_COOKIE problem, you will have to find another solution. For example use Redis or Memcached as a caching service that can be accessed both by online and cli configurations.

Consider to add

1>> /dev/null 2>&1

to the end of your cronjob line, if you don't do so and let cron run this every minute, you will get masses of logfiles.

For the sake of completenes on possible pitfalls when working with php and the cli, allways make sure to provide full paths to your files.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!