4

对于我们的应用程序,我们需要将文件存储在根目录之上,以便流媒体软件可以访问它们。

我成功地创建了一个符号链接:

/var/www/vhosts/myhost.com.au/httpdocs/fileserver/videostream/

至:

/usr/local/媒体服务器/内容/

并且 PHP 将很高兴地处理我的原始视频,该符号链接到根目录上方的真实文件。

但是,如果我尝试

file_exists('/var/www/vhosts/myhost.com.au/httpdocs/fileserver/videostream/myfile.mp4') 

我遇到了各种“open_basedir 限制生效”错误。

有没有解决的办法?或者我是否需要假设我的数据库条目是正确的并且说文件已被处理,它实际上是。

尝试 fopen 会更好还是仍然存在 basedir 限制?

我们位于具有 root 权限的专用主机上,因此我们可以做任何需要的事情。

谢谢。


找到了解决方法,但它不能解决问题:-)

我实际上可以使用 CURL 来拉入实际文件的标题,这让我知道它是否存在。另外一种方法是使用 CURL 检查该文件的流媒体服务器自定义 URL 是否存在。问题解决了,但不是我想要的那样。

4

2 回答 2

1

你应该调查is_link而不是file_exists

于 2017-11-22T12:55:59.093 回答
0

如果您只想检查链接是否存在(而不是链接目标存在,由于 basedir 限制,您无论如何都无法访问),您可以使用readlink函数而不是file_exists. 如果它返回一个字符串,则链接存在,如果它返回,false则链接很可能不存在。

if (@readlink($filename) !== false)
{
    echo "Yay!";
}

理论上 basedir 限制不应该在这里触发,但我不确定。

于 2011-02-23T06:53:54.187 回答