Jer*_*ris 12 php symlink capistrano
我一直在CentOS 6上使用Capistrano建立PHP部署,并遇到了一个有趣的问题.capistrano工作的方式,它设置这样的文件夹:
当我查看"当前"符号链接时,它指向最新版本.首先,在打开我的网络应用程序时,一切正常.部署新版本后,当前文件夹正确指向新版本,但Web应用程序尝试从旧版本(已在Capistrano清理过程中删除)中加载文件.此外,虚拟主机配置为指向/var/www/myapp.com/current/Public.
符号链接是否以任何方式缓存?
失败的特定PHP代码(初始化我的框架)是这样的:
require_once dirname(dirname(__FILE__)) . '/App/App.php';
App\App::run();
Run Code Online (Sandbox Code Playgroud)
这是在index.php中,目前位于/var/www/app.com/current/Public/index.php.
我的Apache错误日志显示:
PHP致命错误:require_once():未能打开'/var/www/myapp.com/releases/20130826172237/App/App.php'(include_path ='.:/ usr/share/pear:/ usr/share/php ')/var/www/myapp.com/releases/20130826172237/Public/index.php
而当前的符号链接显示:
当前 - >/var/www/zverse/releases/20130826172641
显然是20130826172641!= 20130826172237,后者是以前的版本.
我能看到的任何想法或领域?
我无法验证这一点,但 Apache 跟踪/缓存符号链接的旧位置似乎存在一些不可预测的行为:
唯一能绝对解决这个问题的方法是循环 Apache,我们不希望在每次部署时都这样做。——迈克·布里顿
他建议移动整个目录,而不是更新符号链接。