【问题标题】:Running Symfony plug-in tasks via command line SSH on shared hosting在共享主机上通过命令行 SSH 运行 Symfony 插件任务
【发布时间】:2011-04-26 20:24:03
【问题描述】:

我通常的托管环境是专用服务器,但是对于一个项目,我需要将 Symfony 部署到 Linux 共享托管帐户上。

项目本身运行良好,但是,当我通过 SSH 连接到服务器时,命令行无法按预期运行。

例如,如果我导航到 data/symfony/bin 然后输入:

php symfony 

这将返回 symfony 函数列表,但不返回与我的插件(如 sfLucene)相关联的任务。

如何让 CLI 识别插件,以便我可以运行重建 sfLucene 索引等任务?

【问题讨论】:

  • 共享主机是否在 php include_path 上全局安装了 symfony?如果是这样,它可能会妨碍您的项目。
  • 把data/symfony/bin/symfony复制到你项目的根目录怎么样?我不确定我是否喜欢正在使用的路径 - 检查正在使用哪些 symfony 和哪些 php 命令,或者是明确的。还要记住,PHP 的 CLI 版本可能与 Apache 的 SO 版本完全不同,并且可能使用不同的 php.ini 文件。

标签: command-line symfony1 ssh


【解决方案1】:

在要运行的脚本顶部初始化 Symfony 应用程序实例,并将要执行的操作粘贴到脚本中:

require_once('/var/www/domains/yourdomain.com/www/htdocs/config/ProjectConfiguration.class.php');
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
sfContext::createInstance($configuration);

(改成自己的项目路径)

这就是我用来运行 Cron 作业或只是通过 CLI 执行 Symfony 的东西。

这有帮助吗?

【讨论】:

  • 这将解决从 cronjob 或 CLI 执行 symfony 的根本问题,但是使用户定义的任务可用于 CLI 的更广泛(和更优雅)的解决方案仍然存在。
  • @Raise:我的想法是从该脚本中运行任务,使其能够访问所需的一切。
  • 我理解并同意,因为这会模仿 symfony 1.0+ 中的旧批处理/脚本方法,但是如果没有您的解决方法,CLI 应该确实可以使用该任务。
  • @Raise... 很公平,我想创建脚本只是为了执行其他脚本有点麻烦。
【解决方案2】:

最后,我要求我的主机改进我的访问权限,以便我的脚本能够运行。

然后我可以在项目目录的根目录中运行默认的 symfony 文件:

php symfony lucene-rebuild

【讨论】:

    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多