代码之家  ›  专栏  ›  技术社区  ›  Josef Glatz BogdanM

如何使用typo3/surf清除受basicauth保护的环境中的opcache?

  •  0
  • Josef Glatz BogdanM  · 技术社区  · 7 年前

    在一个typo3项目中,我正在工作的生产/登台(或生产/开发或任何其他)环境受http basicauth保护( basic access authentication )

    实例get通过 typo3/surf .

    1. 在某些情况下,typo3/surf必须创建一个临时php文件,可以访问该文件
    2. 稍后:完成切换后,可以通过前端访问新部署。

    如何配置 TyPO3/Surf 要在Basicauth受保护的环境中通过前端访问先前生成的opcache清除脚本?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Josef Glatz BogdanM    7 年前

    配置typo3/surf重置php opcache 一

    配置opcache清除/重置脚本基本上需要四个步骤:

    1. 为设置任务选项 \TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask
    2. 添加任务 \类型3\surf\task\php\webopcacheresetcreatescripttask 早期阶段(例如 package 但肯定是以前 transfer )
    3. 为设置任务选项 \TYPO3\Surf\Task\Php\WebOpcacheResetExecuteTask
    4. 添加任务 \类型3\surf\task\php\webopcacheresetexecutetask 后阶段 switch

    下面是oninitialize函数的必要片段 二 在部署配置脚本中:

    为“创建脚本任务”设置任务选项:

    因为“尊重网络目录” patch ,脚本的路径不能手动配置,因为它会自动使用正确的webdirectory路径(该路径是通过选项beforhand设置的)。

    如果您使用的是旧的Typo3/Surf版本或有任何特殊要求,可以设置选项 scriptBasePath 要设置结果文件的绝对路径,请执行以下操作:

    # In this example, I have to set the absolute path for the resulting php file.
    # Since the deployment run in GitLab CI I get the path to the root of the project's GIT
    # repository via the environment variable `CI_PROJECT_DIR`. Since the path to the webDirectory
    # inside the GIT repository is `<GitRepoRootFOlder>/app/web` I add it manually and concatenate
    # it as final string for the option `scriptBasePath`:
    $workflow->setTaskOptions(\TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask::class, [
        'scriptBasePath' => \TYPO3\Flow\Utility\Files::concatenatePaths([getenv('CI_PROJECT_DIR'), '/app/web']),
    ]);
    

    为“执行任务”设置任务选项:

    此时,我们提供用户名和密码

    $workflow->setTaskOptions('TYPO3\\Surf\\Task\\Php\\WebOpcacheResetExecuteTask', [
        'baseUrl' => $application->getOption('baseUrl'),
        'stream_context' => [
            'http' => [
                'header' => 'Authorization: Basic '.base64_encode("username:password"),
            ],
        ],
    ]);
    

    激活两个任务:

    $workflow->beforeStage('transfer', \TYPO3\Surf\Task\Php\WebOpcacheResetCreateScriptTask::class, $application)
        ->afterStage('switch', \TYPO3\Surf\Task\Php\WebOpcacheResetExecuteTask::class, $application);
    

    此答案仅显示opcache重置过程所需的部分!

    请同时检查 TYPO3 CMS deployment configuration example 在官方文件中。


    脚注

    一 这个答案基于typo3/surf git branch dev master版本2.x

    二 将上述代码片段放置在何处的示例:

    $deployment->onInitialize(function () use ($deployment, $application) {
        /** @var SimpleWorkflow $workflow */
        $workflow = $deployment->getWorkflow();
    
        # the mentioned snippets have to be placed next to your existing configuration
    
    });
    
    推荐文章