【问题标题】:PHP Using external disk drive for download filesPHP 使用外部磁盘驱动器下载文件
【发布时间】:2019-03-13 00:06:26
【问题描述】:

我在将外部存储链接到我的 PHP 主目录时遇到问题。

我在 Linux Centos 6 上使用 Litespeed Web 服务器,并且在我的用户主目录中一切正常。

但我想在我的 2 个硬盘驱动器之间创建一个负载平衡器,以便在高峰时段提供更好的服务。

我在 httpd.conf 中使用下面的配置来创建别名,当我尝试像 https://example.com/cdn/file.mp4 这样直接下载文件时,它运行良好

Alias /cdn/ "/cdn/files/"
<Directory "/cdn/files">
    Options Indexes MultiViews
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

但是如果我尝试在 php 脚本中使用路径,例如检查 file_exists 似乎我不能。

我在外部目录中设置了我的主用户和组。

有什么想法吗?!

更新 1: 我尝试了从主目录到外部目录的符号链接,但仍然没有结果。

更新 2: 我的简单 php 代码:

<?php 
  if(file_exists('/cdn/files/file.mp4') || file_exists('/cdn/file.mp4') || file_exists('./cdn/file.mp4') || file_exists('./~cdn/file.mp4')){
    echo "yes";
  }else{
    echo "no";
  }
?>

结果:没有

【问题讨论】:

  • 您可以通过控制台手动访问这些文件吗?
  • 是的,文件是可以访问的,甚至我可以通过链接直接下载它们。
  • 对不起,我似乎没有正确阅读。那么请分享你使用它的那段代码。
  • 我认为问题不在于函数,因为当我使用具有主主目录路径的函数时,一切都很好。 file_exists('/cdn/files/file.mp4') 或 '/cdn/file.mp4'
  • 当您能够访问远程存储的文件时,您的 conf 可能会运行良好。所以我怀疑你的函数调用有问题。

标签: php apache centos external litespeed


【解决方案1】:

问题出在 php.ini open_basedir 值中。我必须在 open_basedir 值中附加新磁盘的完整路径。

还可以在 httpd.conf 文件中添加 open_basedir 值,如下所示:

<Directory "/home/user/public_html">
   php_admin_value open_basedir /home/user/public_html/:/cdn/files
</Directory>

<VirtualHost myip:80>
   <Directory "/home/user/public_html">
      php_admin_value open_basedir /home/user/public_html/:/cdn/files
   </Directory>
</VirtualHost>

<VirtualHost myip:443>
   <Directory "/home/user/public_html">
      php_admin_value open_basedir /home/user/public_html/:/cdn/files
   </Directory>
</VirtualHost>

我希望这对某人有用:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 2011-04-26
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多