我一直在 CentOS 6 上使用 Capistrano 设置 PHP 部署,并遇到了一个有趣的问题。capistrano 的工作方式是这样设置文件夹:
- /var/www/myapp.com/
- 当前(/releases 中最新版本的符号链接)
- 共享
- 发布
- 20130826172737
- 20130826172114
当我查看“当前”符号链接时,它指向最新版本。起初,打开我的网络应用程序时,一切正常。部署新版本后,当前文件夹正确指向新版本,但 Web 应用程序尝试从旧版本加载文件(已在 Capistrano 清理过程中删除)。此外,虚拟主机配置为指向/var/www/myapp.com/current/Public。
符号链接是否以任何方式缓存?
失败的特定 PHP 代码(初始化我的框架)是这样的:
require_once dirname(dirname(__FILE__)) . '/App/App.php';
App\App::run();
那是在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 后者是以前的版本。
我可以看看任何想法或领域吗?