Php 在webroot外部上载图像文件并通过Html帮助程序访问它们

Php 在webroot外部上载图像文件并通过Html帮助程序访问它们,php,cakephp,Php,Cakephp,我在/var/www/html/Myapp/中有我的应用程序。所以webroot将是 /var/www/html/Myapp/app/webroot/。但是我想上传/var/www/html/uploads/directory上的文件,并通过html助手获取图像 $this->Html->image from uploads目录默认情况下不是来自webroot的/img目录。 所以基本上我不想使用cakephp的webroot。如果我想上传和获取webroot目录之外的文件。 非常感谢您的帮助。

我在/var/www/html/Myapp/中有我的应用程序。所以webroot将是 /var/www/html/Myapp/app/webroot/。但是我想上传/var/www/html/uploads/directory上的文件,并通过html助手获取图像 $this->Html->image from uploads目录默认情况下不是来自webroot的/img目录。 所以基本上我不想使用cakephp的webroot。如果我想上传和获取webroot目录之外的文件。
非常感谢您的帮助。

如果您使用的是cakephp 2.x,我认为这是不可能的,因为HtmlHelper的image方法使用函数assetUrl,而函数assetUrl只从assets目录获取资源。您可以编写或使用插件来处理上载文件并将其放在其他目录中,但它必须仍在您的webroot中。此外,您还可以将相对路径与最外层index.php中的根定义一起使用


有关HtmlHelper源代码的更多信息

上载的文件需要位于可在浏览器中查看的web访问目录中。如果您不想将文件存储在Cake的webroot中,可以使用符号链接,以便访问包含上载的目录

在服务器上,在webroot中创建指向上载目录的符号链接:-

ln -s /var/www/html/uploads/ /var/www/html/Myapp/app/webroot/uploads
然后,您可以访问上载的图像,如:-

echo $this->Html->image('../uploads/example.gif');

从技术上讲,php总是在webroot之外上传,并将上传放在/tmp/random_name中。用户代码必须将该文件移到其他地方…我不想再使用符号链接。寻找一种默认html助手从服务器的任何位置获取文件的方法如果您不使用符号链接,那么您的文件将无法从webroot访问,因此html助手将无法为它们提供服务。您是否试图通过某种形式的身份验证来保护文件?也许这有帮助:。上传不是问题,但需要帮助者获取。需要自定义帮助者或插件,可以从服务器的任何位置获取图像/文件,必须在webroot之外