我有一个文件夹的路径(例如/var/www/tester/assets/themes/default/css/
)。
layout/ie7.css
会给出/var/www/tester/assets/themes/default/css/layout/ie7.css
的路径。
这很好用,但我希望用户也可以在目录树中向上导航。
如果用户提供../../cache/css/ie7.css
,请再次使用css文件夹的路径。我希望路径最终为/var/www/tester/assets/themes/default/cache/css/ie7.css
。
我想我可以将它们一起传递给realpath()例如:
$base = '/var/www/tester/assets/themes/default/css/';
$user_path = '../../cache/css/ie7.css';
$final_path = realpath($base.$user_path);
但这只会返回false。我怎么能这样做?
答案 0 :(得分:1)
首先,真实路径功能还会检查给定路径是否存在...您确定您的路径是否存在???
/var/www/tester/assets/themes/default/css/../../cache/css/ie7.css
不会结束
/var/www/tester/assets/themes/default/cache/css/ie7.css
按照你的建议,但最终会在
中结束/var/www/tester/assets/themes/cache/css/ie7.css
这个文件夹是否存在给定文件?
答案 1 :(得分:0)
请不要。像/var/www/tester/assets/themes/default/css/../../cache/css/ie7.css
这样的路径没有任何问题。它适用于所有操作系统和浏览器。
注意:您是否意识到您可能在此处造成安全风险?如果用户提供../../../../../../../etc/passwd
会怎样?