PHP file_exists()没有检测到Dropbox子文件夹

时间:2018-02-20 15:56:42

标签: php linux dropbox file-exists

我最近将LAMP升级到Ubuntu 16.04,并将Dropbox v43.4.50同步到此文件夹/home/arya/Dropbox (NAMA)

我有一个PHP脚本需要使用Dropbox文件夹中的特定文件。所以,我做file_exists('file:///home/arya/Dropbox (NAMA)/CERTIFICATION/PACE/PACE.xls'),但它返回FALSE。奇怪的是,在我升级之前,file_exists()已为此文件返回TRUE

因此,我通过file_exists('file:///home/arya/Dropbox (NAMA))'测试了File_exists()是否检测到Dropbox文件夹,是的,它返回TRUE

然后,我测试了下一个子目录file_exists('file:///home/arya/Dropbox (NAMA)/CERTIFICATION)'并返回FALSE

所以,我认为权限可能是错误的,但它们是正确的。我是所有文件的所有者,我在Dropbox文件夹之外的其他文件上测试file_exists()并检测到它们。

另外,我确保文件夹/文件的拼写是正确的(我将它从Nautilus的URL栏中复制得更加确定)并且所有文件都可以在我的PHP脚本之外访问。

另外,我的Dropbox文件夹已完成同步。每隔一段时间,我的一位同事就会更新Dropbox中的另一个文件,但同步只需要一分钟,他们永远不会编辑我在这篇文章中尝试使用的文件。

所以,我现在认为我的计算机上的根Dropbox文件夹(Dropbox (NAMA))与同步/同步的文件夹内容之间存在显着差异(例如Dropbox (NAMA)/CERTIFICATIONS )。

有关为什么file_exists没有检测到Dropbox子文件夹的任何想法?

更新 根据评论,我尝试了/path/to/file而不是file:///path/to/file,因此file_exists('/home/arya/Dropbox (NAMA)/CERTIFICATION/PACE/PACE.xls'),它仍然返回FALSE

更新 var_dump(exec("ls -al /home/arya",$Output));显示/home/arya/Dropbox (NAMA)中有6个文件,但var_dump(exec("ls -al /home/arya/Dropbox (NAMA)",$Output));没有显示任何内容...... 为什么?

1 个答案:

答案 0 :(得分:0)

我在终端输入了sudo chmod -R 775 Dropbox\ \(NAMA\)/并重新运行了脚本,file_exists('file:///home/arya/Dropbox (NAMA)/CERTIFICATION/PACE/PACE.xls')返回了TRUE

所以,这是一个权限问题。我认为,虽然文件的所有者和PHP脚本的用户是相同的(arya),但拥有该文件的组(arya:arya)与运行PHP的组不同脚本(arya:www-data)并且文件权限设置为不允许文件所有者组以外的任何人访问它。