我的 Web 应用程序的目录结构如下所示:
在/home/staging 中:
proj
proj-builds
在/home/staging/proj 中:
uploads
www -> /home/staging/proj-builds/b-119/www
在/home/staging/proj-builds 中:
proj-b922
proj-b921
...
我将 www
设为 proj
的最新 b-#/www
目录的符号链接(symbolic link),该目录位于 之外项目
目录。
尝试使用 Upload 类上传内容时,出现此错误:“上传路径似乎无效”
当目录没有符号链接(symbolic link)时,这不会发生。
Apache 虚拟主机指向 www 符号链接(symbolic link)。
知道为什么会发生这种情况以及如何解决它吗?
最佳答案
查看符号链接(symbolic link)解析 ...
自 PHP 4.0.2 起,所有符号链接(symbolic link)都已解析,这意味着您放入 /home/staging/proj/www/
文件夹中的脚本(例如:myscript.php)将“看到”本身不是/home/staging/proj/www/myscript.php
而是/home/staging/proj-builds/b-119/www/myscript.php
如果脚本希望在预先固定的位置看到自己,这可能会导致一些问题。
请注意,对于 Windows 下的 PHP 5.2.x,符号链接(symbolic link)仍未解析,而对于 Windows 下的 5.3.x,它们已解析。在其他类 Unix/Linux 操作系统下,它们在大多数情况下都已解决。
你可以用这个...
<?php print "__FILE__ = " . __FILE__ . "<br />\n"; ?>
...自己看看,将其放入不同位置的文件中。
相同的主体适用于 include/require 语句。
因此,如果您使用的代码希望在固定(可能在配置中定义)位置查看脚本或访问文件夹,例如:/home/staging/proj/www/,它不会在预期的位置找到它。
解决方案是以不同方式链接构建或以不同方式设置配置。
关于php - 符号链接(symbolic link)破坏 CodeIgniter 上传库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053444/