【问题标题】:Cakephp 3 upgrade tools unable to access fileCakephp 3 升级工具无法访问文件
【发布时间】:2015-07-07 18:53:06
【问题描述】:

我尝试使用 Cakephp 3 upgrade tool

我安装了作曲家,我做了这个:

cd /path/to/upgrade
bin/cake upgrade all /home/mark/Sites/my-app

然后我在 windows 命令 shell 中收到大量这样的错误。

error: Could not access ''C:\mydir\upgrade\tmp\upgrade\a2d4223f62e3499a84b6ca30be24bfdb4cb6de40''
Update C:\mydir\myapp\lib\Cake\View\Helper\CacheHelper.php
error: Could not access ''C:\mydir\upgrade\tmp\upgrade\7fbe7651712387f351b1eb670b14c18e1161fcb8''
Update C:\mydir\myapp\lib\Cake\View\Helper\HtmlHelper.php
error: Could not access ''C:\mydir\upgrade\tmp\upgrade\2301f9bed1167ddb29ca4e06706d0d21bd015766''
Update C:\mydir\myapp\lib\Cake\View\Helper\NumberHelper.php
error: Could not access ''C:\mydir\upgrade\tmp\upgrade\e71af0cbc7df7ff76e801c5fb06ec07ee7f45233''
Update C:\mydir\myapp\lib\Cake\View\Helper\PaginatorHelper.php
error: Could not access ''C:\mydir\upgrade\tmp\upgrade\1b04b5a763ca4e798d1e176111e49008b7486724''
Update C:\mydir\myapp\lib\Cake\View\Helper\TextHelper.php
error: Could not access ''C:\mydir\upgrade\tmp\upgrade\f8ead667c131610c1f70f38d10c7122b34d9a7fc''
Update C:\mydir\myapp\lib\Cake\View\Helper\TimeHelper.php
error: Could not access ''C:\mydir\upgrade\tmp\upgrade\4a2c2e7f3f7e9faf744d10e6e1f3ff24bead7f08''
Update C:\mydir\myapp\lib\Cake\View\HelperCollection.php

我以管理员身份运行命令 shell。会有什么问题?操作过程中查看文件夹时,可以看到文件夹中存在临时文件。

【问题讨论】:

    标签: cakephp composer-php cakephp-3.0


    【解决方案1】:

    我遇到了同样的问题。这是问题的描述:

    • 这是一个 Git 错误
    • 失败的 Git 命令由 /upgradeTool/src/Shell/Task/StageTask.php 在第 176 行通过 exec() php 函数调用(对你来说似乎不同)
    • 运行 git 的命令如下所示:git diff --no-index 'T:\Logiciels\CakePHP_3_upgradeTool\tmp\upgrade\c5d0aaadb3484d4bfe56bdfc4553b444f6789e66' 'T:\Logiciels\CakePHP_3_upgradeTool\tmp\upgrade\4a6662f82cd03d46b515c28f7d77ef8a64c08cfd'

    编辑 (2015-07-12)

    正如 ndm 所指出的,“问题的根源在于 git 命令的参数中的单引号用法,Windows CLI 会将它们作为文件路径传递”

    我将这一行(/upgradeTool/src/Shell/Task/StageTask.php 第 176 行)从:

    exec("git diff --no-index "$oPath" "$uPath"', $output);
    

    到:

    exec('git diff --no-index "'.$oPath.'" "'.$uPath.'"', $output);
    

    现在这个过程似乎完成了。非常感谢!

    【讨论】:

    • 您是否对源代码中的修复进行了 PR?那会很好。
    【解决方案2】:

    经过试用,我找到了解决方案。正如 DarXnake 所说,问题出在 git 上。

    当您安装 git 时,它会询问您是否要从命令行使用 git。默认选项是Use Git Bash only。我选择了那个选项。

    现在我更新了 git,当安装程序询问安装类型时,我选择了Run Git from the Windows Command Prompt。然后我重试 cakephp 升级,没有出现任何访问​​错误。

    【讨论】:

    • 如果这真的解决了问题,我会感到惊讶,因为问题的根源是 git 命令参数中的单引号使用,Windows CLI 将传递它们,就好像它们属于文件路径。如果 GIT 尚未在您的 PATH 环境变量中,那么您将收到完全不同的错误消息。
    • 在此更改之前,我的环境变量中有 git 路径。在该步骤错误消失并且升级工作之后。
    • 可能是真的,它后来工作了,但这很可能不是因为 GIT 升级,而更有可能是因为在第二次运行时,文件已经被修改,只需要移动,所以它不会再到达有问题的git 命令。用需要移动和修改文件的 Cake 2.x 项目再试一次,我很确定它会再次失败。
    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 2021-03-20
    • 1970-01-01
    • 2021-10-05
    • 2020-11-13
    • 2019-07-15
    • 2018-07-26
    • 2018-01-27
    相关资源
    最近更新 更多