• Please be aware: Kaspersky Anti-Virus has been deprecated
    With the upgrade to Plesk Obsidian 18.0.64, "Kaspersky Anti-Virus for Servers" will be automatically removed from the servers it is installed on. We recommend that you migrate to Sophos Anti-Virus for Servers.
  • The Horde webmail has been deprecated. Its complete removal is scheduled for April 2025. For details and recommended actions, see the Feature and Deprecation Plan.
  • We’re working on enhancing the Monitoring feature in Plesk, and we could really use your expertise! If you’re open to sharing your experiences with server and website monitoring or providing feedback, we’d love to have a one-hour online meeting with you.

Issue PHP Warning: Unknown: open_basedir restriction in effect

LionKing

Regular Pleskian
Server operating system version
Ubuntu Linux
Plesk version and microupdate number
Plesk Obsidian Web Host Edition Version 18.0.54 Update #3
Hi.
We configured that the php_errors.log file in php that should be logged in the "logs" folder. This among things for security reasons as it then reside above the www root.

But PHP doesn't seem happy with our choice quote:
AH01071: Got error 'PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/logs/php_errors.log) is not within the allowed path(s): (/var/www/vhosts/crm.xyz-example.com/:/tmp/) in Unknown on line 0', referer:
So how do we configure PHP and Plesk to be "happy" with that we have the php error log in that directory of the domain root?

FYI: We did test this suggested solution from the online documentation: https://support.plesk.com/hc/en-us/...accessible-open-basedir-restriction-in-effect but that generates syntax errors.

Adding directly in php settings and the php.ini / user.ini files
; Open dir
open_basedir = "/logs"
Does make the change but then it complains over that files in the www public folder is not allowed like example "index.php"


Thanks in advance.
 
You seem to use an absolute path /logs, which starts at the disk root. For that reason it is considered to be outside your webspace.

Instead you can use the full path, e.g.
PHP:
ini_set("error_log", "/var/www/vhosts/crm.xyz-example.com/logs/php-error.log");
 
If you mean the "Additional directives" on the PHP settings page, then you cannot add PHP code there, but need to enter it like
Code:
error_log = /var/www/vhosts/crm.xyz-example.com/logs/php-error.log

The previously shown line
PHP:
ini_set("error_log", "/var/www/vhosts/crm.xyz-example.com/logs/php-error.log");
is the way to set the variable in a PHP script.
 
No, this is what you'd use in a PHP script. The ini-fomat is
Code:
error_log = /var/www/vhosts/crm.xyz-example.com/logs/php-error.log
 
Back
Top