因此,我用 PHP 构建了这个很棒的报告页面,它从一些 CSV 文本文件加载数据,并为我们的客户创建漂亮的 Google 图表和表格。然后我想,如果文本文件位于共享 Dropbox 文件夹中,这样我的员工就可以更新文本文件,然后在线查看其更新,而无需破解任何代码或处理数据库,那就太棒了。这一切在我的本地开发人员上运行得很好,但是当我将代码上传到我的生产服务器时,我遇到了问题。我认为这是一个 Unix 权限问题,这是 PHP 错误:
[Sun Apr 07 11:27:58 2013] [warn] [client 208.69.41.10] mod_fcgid: stderr: PHP Warning: file(/root/Dropbox/Reports/client-report.csv): failed to open stream: Operation not permitted in /var/www/vhosts/mydomain.com/httpdocs/my-awesome-report-page.php on line 49, referer: http://www.mydomain.com/my-awesome-report-page.php
允许 PHP 获取 CSV 文件的最佳方式是什么/root/Dropbox
?生产运行的是 CentOS 5.8。
站点的 httpdocs 文件夹中的文件似乎都属于 mydomain:psacln,而 root ~ 中的文件是 root:root。
正如评论中所讨论的,我想找到一个安全的解决方案。报告页面 HTML 隐藏在登录信息后面。
答案1
设置从文档根目录到文件夹的符号链接。
ln -s /var/www/reports /root/Dropbox/Reports
如果文件可读,这有助于直接访问这些文件,而无需更改 Apache 和 PHP 中的安全设置。
答案2
我有两个想法可以解决您的问题:
- 您可以以 root ( ) 身份创建一个 cronjob
crontab -e
,将您需要的文件复制到网络服务器可以读取的文件夹中。
您可以将 cronjob 配置为每分钟运行一次,这对于大多数情况来说应该足够了。 - 为您的保管箱创建一个新用户(如果不是绝对必要,以 root 身份运行内容并不是一个好习惯)。我还建议创建一个单独的 Dropbox 用户,该用户仅对您需要的一个文件夹具有共享访问权限(这样您就不会意外共享超出您想要的文件夹)。
如果您想让我了解更多细节,请随时询问:)