file_exists 与 realpath 返回 false ,但文件存在,权限正常

WBOY
发布: 2016-06-06 20:44:06
原创
1833 人浏览过

下文中的问题,在 PHP 5.5.14 中发生的,
测试了之后,在 5.4.30 后并无此问题……
不知道是 5.5.14 的 Bug 还是神马的……
在 5.5.14 中是否有办法解决?


(注:文中文件夹名称已打码)
在 PHP 当中实测代码如下:

<code class="lang-php"><?php var_dump(realpath('./'));
var_dump(realpath('../'));
var_dump(realpath('../u******/api/uc.php'));

</code></code>
登录后复制
登录后复制

得到了结果如下:

<code>string(28) "/home/wwwroot/m*****/u******"  
bool(false)  
bool(false)  
</code>
登录后复制
登录后复制

在网上找了好久,起初认为是文件夹权限,
所以我将 /home/wwwroot/ 下归递改为 755 (chmod -Rf 755 /home/wwwroot),
但是结果还是一样。

回复内容:

下文中的问题,在 PHP 5.5.14 中发生的,
测试了之后,在 5.4.30 后并无此问题……
不知道是 5.5.14 的 Bug 还是神马的……
在 5.5.14 中是否有办法解决?


(注:文中文件夹名称已打码)
在 PHP 当中实测代码如下:

<code class="lang-php"><?php var_dump(realpath('./'));
var_dump(realpath('../'));
var_dump(realpath('../u******/api/uc.php'));

</code></code>
登录后复制
登录后复制

得到了结果如下:

<code>string(28) "/home/wwwroot/m*****/u******"  
bool(false)  
bool(false)  
</code>
登录后复制
登录后复制

在网上找了好久,起初认为是文件夹权限,
所以我将 /home/wwwroot/ 下归递改为 755 (chmod -Rf 755 /home/wwwroot),
但是结果还是一样。

如果是Redhat系的系统,还要检查SELinux的权限是否正确

php文件是不是utf8编码,要检测的文件名是不是中文?如果是这样,需要转码为gb2312,
例:

<code class="lang-php">file_exists(iconv('utf-8','gbk','D:/test/中文啊.txt'));
</code>
登录后复制
相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!