Just noticed that there is a problem the ownCloud's cron.php in case it is installed in an chrooted environment.
Lets consider the following setup:
chroot = /var/www/localhost
'datadirectory' => '/data'
mount /dev/sda3 /var/www/localhost/data (not really relevant)
doc_root = /htdocs
(P.S. getting ownCloud to work in chroot is a real PITA)
Since I am using PHP-FPM, then all configuration is done for the FPM, but cron uses PHP-CLI:
*/15 * * * * php -f /var/www/localhost/htdocs/cron.php
What happens when the cron is executed is that PHP-CLI reads the config.php and sees "/data", which is the ABSOLUTE path for it.
This results in PHP checking for the wrong directory and fails.
There are few options how to fix it on your own.
- you could chroot the PHP-CLI to the same directory (not a good idea)
- you could create a cron script that requests cron.php, like wget and use the webcron option. (a bit better solution)
When using webcron, ownCloud alerts you that this may impact your performance. On certain configurations webcron option will spawn a new child process and if the child count is limited then this will impact the overall performance.
Devs could add an option to config.php like:
'chroot_path' => '/var/www/localhost',
(and make cron.php to account the chroot path too).
Maybe someone else has a better idea?
My current solution:
*/15 * * * * wget -qO- https://owncloud.lan/cron.php &> /dev/null