我有一个 Symfony 1.2.4 应用程序,从Symfony 沙盒应用程序中获取和修改,没有努力确保 Symfony 引擎与我的应用程序分离,所以现在 Symfony 引擎只是我应用程序中的一个文件夹。
从 Symfony 1.2.4 升级到 1.2.7 的最佳方式是什么?有任何想法吗?
我有一个 Symfony 1.2.4 应用程序,从Symfony 沙盒应用程序中获取和修改,没有努力确保 Symfony 引擎与我的应用程序分离,所以现在 Symfony 引擎只是我应用程序中的一个文件夹。
从 Symfony 1.2.4 升级到 1.2.7 的最佳方式是什么?有任何想法吗?
我找到了解决方案。
首先,必须将 Symfony 框架从沙盒应用程序中移出,然后使用 PEAR 升级 Symfony 框架,如本文所述。
最简单的方法:
下载新的 symfony 沙盒版本,从该存档中获取数据和库文件并将其放入项目文件夹中(覆盖现有的数据和库文件夹)。之后清理您的项目缓存并重建模型(以及表单和过滤器)。
php symfony clear:cache
php symfony propel:build-all
或者如果使用学说:
php symfony clear:cache
php symfony doctrine:build-all
这将始终适用于次要修订(1.2.3 到 1.2.9 或 1.1.2 到 1.1.5)。对于从 1.0 升级到 1.1 或 1.2 或 1.3,您将有额外的步骤(您在文档中有详细说明)
您还应该考虑使用 SVN 和/或在项目的 lib/vendor 文件夹中安装 symfony。这将使 symfony 项目依赖,这在同一服务器上有多个 symfony 项目的情况下很有用。
Symfony 1.2 是一个稳定版,这是什么意思?
稳定:symfony 团队致力于修复稳定版本的错误和安全问题,直到维护结束。平均而言,我们每月发布一个错误修复版本。 这些版本从不包含新功能,即使是小功能,但只包含错误修复。因此,它们始终向后兼容,升级到.
就像 Oncle Tom 说的,如果你正在处理多个 Symfony 项目,如果它们共享同一个 Symfony 库,更新它们会更容易。
从 SVN 存储库签出 Symfony 库:
daemon@dev:/home/dev/symfony$ svn co http://svn.symfony-project.com/branches/1.2
编辑您的 config/ProjectConfiguration.class.php :
#require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
require_once '/home/dev/symfony/1.2/lib/autoload/sfCoreAutoload.class.php'; // use the shared lib instead
sfCoreAutoload::register();
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
// for compatibility / remove and enable only the plugins you want
$this->enableAllPluginsExcept(array('sfPropelPlugin', 'sfCompat10Plugin'));
}
}
然后你就完成了。您现在正在使用一个共享且易于更新的 Symfony 库,并且您已经更新了您的项目。
开始新项目:
daemon@dev:/home/dev/sfProjects$ php /home/dev/symfony/1.2/data/bin/symfony generate:project 项目
这是一个老问题,但我想我会添加一个想法。以前认为最好的做法是在服务器上拥有一个 symfony 位置,因为可以升级它并神奇地升级单个服务器上的所有站点。实际上,这并不容易。首先,当将站点从一台服务器移动到另一台服务器时,可能需要修复符号链接或库文件夹的绝对路径。此外,正如@deresh 所说,需要在升级之间清除缓存 - 这需要花费多个项目的时间,并且可能会将它们关闭,直到它们全部完成。
所以总而言之,这些天我将 symfony 1.x 嵌入到任何 symfony 项目中,而不是引用外部位置。它将 symfony 的“已知良好版本”带入版本控制,使其更易于部署,升级只是在开发副本中删除和替换它们的问题lib/symfony
,data/symfony
并用新 tarball 中的lib
和文件夹替换它们。data
这些应该被提交,然后项目可以很容易地部署在服务器上——svn up
如果你在服务器上使用 Subversion,则可以使用 `./symfony cc'。
通常你不需要重建你的模型,除非你知道你的 ORM 版本在 symfony 版本之间已经改变了。