[BlueOnyx:26171] Re: BlueOnyx 5210R/5211R "open_basedir" can be set to "none" now
Michael Stauber
mstauber at blueonyx.it
Sat Apr 29 20:36:11 -05 2023
Hi Brian,
> Ran into an issue I believe after the update.
> WHMCS says it wants to run the following, which has been working for a long time until within the last 24 hours (I think around 4-5 when I write this).
>
> /usr/bin/php -q /home/.sites/site3/wwwroot/web/portal/crons/cron.php
>
> Via SSH root account, I get the following:
> [root@<servername> ~]# /usr/bin/php -q /home/.sites/site3/wwwroot/web/portal/crons/cron.php
> PHP Warning: require_once(): open_basedir restriction in effect. File(/home/.sites/site3/wwwroot/web/portal/crons/bootstrap.php) is not within the allowed path(s): (/tmp/:/usr/sausalito/configs/php/:/var/lib/php/session/) in /home/.sites/site3/wwwroot/web/portal/crons/cron.php on line 0
> PHP Warning: require_once(/home/.sites/site3/wwwroot/web/portal/crons/bootstrap.php): failed to open stream: Operation not permitted in /home/.sites/site3/wwwroot/web/portal/crons/cron.php on line 0
> PHP Fatal error: require_once(): Failed opening required '/home/.sites/site3/wwwroot/web/portal/crons/bootstrap.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/.sites/site3/wwwroot/web/portal/crons/cron.php on line 0
There is no way for a cronjob to know which Vsite it belongs to. And
therefore it runs with the default php.ini for whatever PHP version (OS
or shop) you are using. And that php.ini does have restrictive
open_basedir settings.
But there is a way around that. Modify your cronjob to set a
'open_basedir=none' on the commandline:
/usr/bin/php -d open_basedir='none' my-script.php
... or ...
/home/solarspeed/php-<version>/bin/php -d open_basedir='none' my-script.php
So in your case it would be this:
/usr/bin/php -d open_basedir='none' -q
/home/.sites/site3/wwwroot/web/portal/crons/cron.php
That should do the trick.
Or if you want it to be restrictive, assemble a correct open_basedir for
your usage case like this:
/usr/bin/php -d
open_basedir='/tmp/:/usr/sausalito/configs/php/:/var/lib/php/session/:/home/.sites/site3/'
-q /home/.sites/site3/wwwroot/web/portal/crons/cron.php
That then limits this PHP cronjob to the above defined directories and
this one includes the root directory of the Vsite, which is missing if
you run with the 'open_basedir' settings of the php.ini alone.
--
With best regards
Michael Stauber
More information about the Blueonyx
mailing list