vapor-cli icon indicating copy to clipboard operation
vapor-cli copied to clipboard

Fix Windows issue preventing compression when symbolic link is added …

Open kent13n opened this issue 2 years ago • 1 comments

When using the 'php artisan storage:link' command in the vapor.yml file, deploying or building on Windows becomes impossible as the application compression fails everytime. I added a check to avoid adding symbolic paths to the zip archive on Windows by verifying that we are on the Windows OS, that the file is a directory, and that it is a symbolic link. I used 'array_diff' because the 'is_link' function always returns false on Windows. See: https://bugs.php.net/bug.php?id=65697.

kent13n avatar Sep 22 '23 10:09 kent13n

Hi there, is this any fix be merged someday? I've have a similiar problem but at the Copy Stage.

PHP Warning:  copy(): The first argument to copy() function cannot be a directory.

That warning shows up when this code is being executed: https://github.com/laravel/vapor-cli/blob/cf4090018bc15472bec1f3a75238312c902fc2d7/src/BuildProcess/CopyApplicationToBuildPath.php#L25C9-L33C10

It seems that junctions files on windows are not being propely detected by SplFileInfo. This is what I get after trying to get file info on tinker:

$f = new SplFileInfo("vendor/myVendor/MyLocalPackage");                                                                                                                                                                               
PHP Notice:  SplFileInfo::getType(): Unknown file type (0) in C:\Users\User\Documents\projects\myProject\vendor\symfony\var-dumper\Caster\SplCaster.php on line 134
= SplFileInfo {#6705
    path: "vendor/myVendor",
    filename: "MyLocalPackage",
    basename: "MyLocalPackage",
    pathname: "vendor/myVendor/MyLocalPackage",
    extension: "",
    realPath: "C:\Users\User\Documents\projects\myProject\nova-components\MyLocalPackage",
    aTime: 2024-11-12 14:30:55,
    mTime: 2023-05-30 11:11:53,
    cTime: 2023-05-30 11:11:53,
    inode: 281474976917772,
    size: 4096,
    perms: 040777,
    owner: 0,
    group: 0,
    type: "unknown",
    writable: true,
    readable: true,
    executable: false,
    file: false,
    dir: false,
    link: false,
    linkTarget: "C:\Users\User\Documents\projects\myProject\nova-components\MyLocalPackage",
  }

if I input the "dir" command on cmd at path vendor\myVendor, I get this:

Directory of C:\Users\User\Documents\projects\myProject\vendor\myVendor

12/11/2024  11:11    <DIR>          .
12/11/2024  11:14    <DIR>          ..
12/11/2024  11:11    <JUNCTION>     MyLocalPackage [C:\Users\User\Documents\projects\myProject\nova-components\MyLocalPackage]

Thanks in advance.

didix16 avatar Nov 12 '24 17:11 didix16