【问题标题】:Symlinking issues leading to file not found导致找不到文件的符号链接问题
【发布时间】:2015-06-02 17:43:20
【问题描述】:

在我的主目录中,我有一个 laravel 项目文件夹:

/home
  /user
    /project
      /public     <--------.
        index.php          |
      /bootstrap           |
        autoload.php       |
      /config              |
        /public            |
/src                       |
  /http                    |
    /project (softlink to here)

project/public/index.php 我有这个:

require __DIR__.'/../bootstrap/autoload.php';

我将我的 apache 公用文件夹软链接到我的用户目录中的公用文件夹:

$ ln -s /home/user/project/public /srv/http/project

所以我应该可以打开localhost/project。但我收到 500 内部服务器错误。以下是来自 apache 的相关日志:

$ cat /var/log/httpd/error_log
[Tue Jun 02 2015] [:error] PHP Warning:  require(/home/user/project/config/public/../bootstrap/autoload.php): failed to open stream: No such file or directory in /home/user/project/config/public/index.php on line 21, referer: http://localhost/project/
[Tue Jun 02 2015] [:error] PHP Fatal error:  require(): Failed opening required '/home/user/project/config/public/../bootstrap/autoload.php' (include_path='/home/user/project/vendor/phpunit/php-text-template:/home/user/project/vendor/phpunit/php-timer:.:/usr/share/pear') in /home/user/project/config/public/index.php on line 21, referer: http://localhost/project/

日志表明服务器正在寻找/home/user/project/config/bootstrap/autoload.php。为什么呢?我没有链接到/home/user/project/config/public。我不知道这是 apache、php、链接还是文件系统的问题。

【问题讨论】:

  • 您是否设置了FollowSymLinks 选项?
  • @hoss 我的httpd.conf 包含Options Indexes FollowSymLinks,所以应该启用它。

标签: php apache unix laravel symlink


【解决方案1】:
/home
  /user
    /project
      /public     <--------.
        index.php          |
      /bootstrap           |
        autoload.php       |
      /config              |
        /public            |
/src                       |
  /http                    |
    /project (softlink to here)

因此,将符号链接展平后,您的 docroot 看起来像:

/src
  /http
    /project
        index.php

就您的应用而言,../bootstrap 不存在。

将您的符号链接上移一级:

$ ln -s /home/user/project /srv/http/project

【讨论】:

  • 所以在休息和重新启动后,我继续制作您建议的符号链接并且localhost/project/public 有效(它还有另一个错误,但这是不相关的)。然后,我创建了一个指向现在可以使用的原始位置的新链接。所以我不认为这是解决这个问题的答案。我是否应该将此标记为正确答案?
猜你喜欢
  • 1970-01-01
  • 2013-03-13
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多