我正在使用PHP的realpath()
函数,想知道为什么我得到以下输出:
bool(false)
string(48) "/var/www/vhosts/website.co.uk/httpdocs"
bool(false)
string(48) "/var/www/vhosts/website.co.uk/httpdocs"
运行此脚本时:
<?php
error_reporting(-1);
header('content-type: text/plain');
var_dump(realpath('/var/www/vhosts/website.co.uk/application'));
var_dump(realpath('/var/www/vhosts/website.co.uk/httpdocs'));
var_dump(realpath(dirname(__FILE__) . '/../application'));
var_dump(realpath(dirname(__FILE__) . '/../httpdocs'));
exit;
具有以下文件权限:
drwxr-x--- 5 username psaserv 4096 Jul 16 08:22 application
drwxr-x--- 10 username psaserv 4096 Jul 16 13:34 httpdocs
注意:
apache
用户apache
用户属于psaserv
群组答案 0 :(得分:1)
除非plesk在过去几年中发生了变化 - it sets open_basedir restrictions,否则您只能访问httpdocs
文件夹:
默认的open_basedir设置使您能够为每个网站写入2个位置。应该没有理由写入任何其他文件夹。 [...]
- 的/ tmp
- /var/www/vhosts/domain.com/httpdocs
因此,如果请求尝试读取/写入任何其他位置 - 它将无法执行此操作,因此realpath
将对httpdocs
文件夹之外的任何位置返回false。
如果您希望在引用的论坛帖子中看到相关的脚本,则会移动并在此处找到:unplesk。