PHP: Require path does not work for cron job? PHP: Require path does not work for cron job? php php

PHP: Require path does not work for cron job?


Technically seen the php script is run where cron is located; ex. If cron was in /bin/cron, then this statement would look for common.php in /bin/includes/common.php.

So yeah, you'll probably have to use fullpaths or use set_include_path

set_include_path('/home/username123/public_html/includes/');require 'common.php';


nono. you need to use absolute paths on crons.

what I do is:

// supouse your cron is on app/cron and your lib is on app/lib$base = dirname(dirname(__FILE__)); // now $base contains "app"include_once $base . '/lib/db.inc';// move on


With all do respect to all the current answers, they all went to "change the php code" approach.

I don't like to change my PHP files just to run it from a cron because it reduces the code portability and increases the chances to forget to change one or two relative paths and break the program.

Instead change the directory at the cron tab line, and leave all your relative paths and your PHP files untouched. For example

1 1 * * * cd /home/username/public_html/&& php -f script.php

check this answer

also check this article, I will quote the relative part

Depending on the code in your PHP script, it may only run correctly when called from a specific directory. For example, if the script uses relative paths to include files, it will only run if it is called from the correct directory. The following command shows how to call a PHP script from a specific directory:

cd /home/username/public_html/; php -q script.php