允许 apache/php 用户访问 web 根目录之外的文件夹

允许 apache/php 用户访问 web 根目录之外的文件夹

(centos 5.8、php 5、apache 2.3、FMS 4.5)

使用 Adob​​e Flash Media Server (FMS) 通过自定义应用程序从网络摄像头录制,效果很好,并且 flv 文件在 /opt/adobe/fms/applications/record/stream/ 中创建定义

通过 rtmp 播放这些文件也很好,一切都很棒。但我想在 iOS 设备上播放这些文件,而 iOS 无法处理 flash,所以需要将它们转换为 .mp4

我发现的解决方案之一是使用 ffmpeg 将 .flv 转换为 .mp4 - 并且从命令提示符下,这可以正常工作

从我的 apache www 根目录中的 php 脚本,使用 exec、shell_exec 甚至系统,它什么都没有返回,并且永远不会创建 .mp4

如果我只执行 exec_shell("ffmpeg --help") 它就可以工作,并且我会在浏览器中获得输出 - 所以 apache / php 可以正常执行 ffmpeg

因此问题是 apache / php 有权读取 wwwroot 之外的文件或转身写入新的 .mp4

我试图在我的 wwwroot 中创建一个符号链接,并将其用作我的路径而不是绝对路径,允许在 apache 配置中跟踪符号链接,但这不起作用。

我这里漏掉了一些东西……

有想法吗?

最终,我希望将 .mp4 文件创建在我的 www 根文件夹中的某个位置,以便 iOS 设备可以通过 http 访问它

答案1

您可以允许任何人读取文件夹

chmod a+rx <foldername>

需要执行位才能进入该文件夹。

如果你不希望系统上的任何人都能够访问该文件夹,你可以将 apache 添加到 FMS 组并将该文件夹设置为

chmod g+rx <foldername>

答案2

要将 Apache 添加到 FMS 组,请执行以下操作:

usermod -G FMS apache 

然后确保组成员可以执行、写入和读取该文件夹:

chmod 770 /path/to/fmsfolder

如果 FMS 还用于其他用途,那么我建议您创建一个单独的组 webFMS,并将 FMS 也添加到该组,然后将文件夹 chown 到该组即可。这样更安全。如果 FMS 只使用该文件夹,则无需担心。

请注意,您需要了解所涉及的风险,出于安全原因,必须小心处理 shell 命令。阅读手册以了解如何正确转义,尤其是当用户可以向其中添加内容时。

相关内容