php - 符号链接(symbolic link)破坏 CodeIgniter 上传库

标签 php linux apache codeigniter symlink

我的 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/

相关文章:

php 添加或减去时区偏移量

php - 如何确保php对wp专用服务器有写权限

linux - 在 Debian Wheezy 上升级 GLIBC

apache - https tomcat 打开 https ://localhost:8443 but not using ip https://10. 217.14.97:8443

apache - mod_rewrite - 添加 www

python - 相同的权限,不同的权利?

javascript - 让PHP跑在.js页面上不可行吗?

php - 如何将变量值存储到mysql数据库中

linux - 如何使用 tar 命令复制我的主目录

c - 环回设备上的组播