Php 是\u文件还是文件\u不在apache中工作,而是在CLI中工作
我对is_file或file_exists函数有一个非常奇怪的行为 <?php $nfsFile = '/mnt/nfsdir/file.txt'; var_dump(is_file($nfsFile)); ?> 此代码始终返回FALSE,但: $php-r'var_dumpis_file'/mnt/nfsdir/file.txt';' 返回TRUE,这是正确的 我正在运行Debian Squence、Apache2.2.15和PHP5.3.2-1 我不在安全模式下,目录/mnt/nfsdir/和所有文件都在777中,www数据用户可以使用ls/mnt/nfsdir/所以我现在有点不懂Php 是\u文件还是文件\u不在apache中工作,而是在CLI中工作,php,apache2,debian,Php,Apache2,Debian,我对is_file或file_exists函数有一个非常奇怪的行为 <?php $nfsFile = '/mnt/nfsdir/file.txt'; var_dump(is_file($nfsFile)); ?> 此代码始终返回FALSE,但: $php-r'var_dumpis_file'/mnt/nfsdir/file.txt';' 返回TRUE,这是正确的 我正在运行Debian Squence、Apache2.2.15和PHP5.3.2-1 我不在安全模式下,
欢迎任何建议 在我看来确实像是服务器配置问题 可能测试echo exec'ls/mnt/nfsdir/file.txt';工作 我不这么认为。原因是,即使www数据可以访问该文件,PHP也不允许访问它 但是如果exec'ls/mnt/nfsdir/file.txt';这可能是你的解决方案
否则,我将再次查看服务器配置。如果您知道该文件存在,因为您是在测试期间创建的,当然,尝试执行该操作(例如,获取文件内容)的结果是什么?您的路径是绝对路径还是相对路径?如果是相对的,则从命令行运行时CWD可能不同。是的,事实上,如果要访问任何文件,即使未处于安全模式,open_basedir也必须设置为“无”。更改open_basedir=none解决了这个问题,但我认为它不是很安全。。您可以确保所有的open、exec等语句都不允许用户打开/执行任何文件。如果用户可以决定打开哪个文件,请确保预先添加basedir并禁用../,这样您的应用程序应该与open_basedir set一样安全。