0

I'm trying to get GrumPHP to work with a small Laravel 9 project but php-cs-fixer is being pulled from the wrong location and I can't seem to find how to change this.

Error from GrumPHP:

phpcsfixer
==========

PHP needs to be a minimum version of PHP 7.1.0 and maximum version of PHP 7.4.*.

You can fix errors by running the following command:
'/windir/f/wamp64/vendor/bin//php-cs-fixer' '--config=./home/testuser/php-cs-config.php_cs' '--verbose' 'fix'

Seems like an easy fix, so I updated php-cs-fixer and followed the upgrade guide to get to v3. (currently sitting on 3.10). But I can also see that '/windir/f/wamp64/vendor/bin//php-cs-fixer' is not the correct directory for php-cs-fixer, the actual bin folder is located in WSL not the windows directory so I included a GRUMPHP_BIN_DIR in the grumphp yaml but still no luck.

grumphp.yml

grumphp:
  environment:
    variables:
      GRUMPHP_PROJECT_DIR: "."
      GRUMPHP_BIN_DIR: "./home/testuser/tools/vendor/bin/"
    paths:
      - './home/plustime/tools'
  tasks:
    phpcsfixer:
      config: "./home/testuser/php-cs-config.php_cs"
      allow_risky: ~
      cache_file: ~
      rules: []
      using_cache: ~
      config_contains_finder: true
      verbose: true
      diff: false
      triggered_by: ['php']

I can't seem to find much about this or anything in the docs, so any help would be appreciated.

Second2None
  • 1,470
  • 1
  • 12
  • 22

1 Answers1

0

This ended up coming down to altering how WSL constructs the environment. To get around WSL building windows paths into the Linux distribution.

The answer was found here: How to remove the Win10's PATH from WSL

Quick run down:

  • On the WSL instance open the file /etc/wsl.conf with something like sudo nano /etc/wsl.conf
  • Add the following lines to the bottom of the file,
[interop]
appendWindowsPath = false

Mine looked like this when it was finished:

    # Enable extra metadata options by default
    [automount]
    enabled = true
    root = /windir/
    options = "metadata,umask=22,fmask=11"
    mountFsTab = false
    
    # Enable DNS – even though these are turned on by default, we'll specify here just to be explicit.
    [network]
    generateHosts = true
    generateResolvConf = true
    
    [interop]
    appendWindowsPath = false

Then restart the WSL instance from your windows terminal and restart it.

wsl --shutdown

GrumPHP now using the correct php-cs-fixer.

Second2None
  • 1,470
  • 1
  • 12
  • 22