UU Blog

LN链接文件include路径异常情况。

昨天有开发叫把部署时候,替换配置文件原本用cp换成ln。说是为了修改配置方便。

但是如果一个目录有很多个配置,含子目录,用ln -r是不行的。逐个ln很是麻烦。

不过,开发说啥就是啥。。。

但是今天一些URL访问出现异常。

大致错误如下。

1
PHP message: PHP Fatal error:  require(): Failed opening required '/wwwroot/resources_do_not_delete/xxxx/frontend/web/../../common/config/bootstrap.php' (include_path='.:/app/php56/lib/php') in /wwwroot/resources_do_not_delete/xxxx/frontend/web/index.php on line 7" while reading response header from upstream, client: 14.xxx.xxx.180, server: qdtest.laoganbu.cn, request: "GET /help-web/index HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xxx.xxx.cn"

发现php文件 require文件的时候,路径跑到被链接的文件目录去了。而我们所需要的是获取链接文件所在的目录下的文件。

知道问题就好办了。把ln -s改为ln -d硬链接。

可以自己写个php,然后分别用这两种方式做链接到web目录。

1
2
3
<?
echo __DIR__;
?>

usage: ln -[s|d] 源文件 链接文件

测试结果如下:
ln -s : 源文件所在的目录
ln -d : 链接文件所在的目录

给作者打一针鸡血