Using rector in an Windows environment
I'm having trouble running rector in an Windows environment.
Windows 10
PhpStorm 2022.2
XAMPP (PHP 7.4.29)
rector 0.13.10, installed with composer, vendor/bin/rector init executed on cli.
=> vendor directory is in the root.
There is an issue in YouTrack, that request selecting an CLI-Interpreter. So I selected my php.exe.
With this setting, a right-click on a folder and "run rector" results in the command:
E:\xampp\php\php.exe vendor/bin/rector process E:/xampp/htdocs/contentbroker/batch --output-format=json --dry-run
which outputs the content of the called script "endor/bin/rector", because it's not a php-Skript.
dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../rector/rector/bin" && pwd)
if [ -d /proc/cygdrive ]; then
case $(which php) in
$(readlink -n /proc/cygdrive)/*)
# We are in Cygwin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
;;
esac
fi"${dir}/rector" "$@"
=> without the CLI setting the error just says:
Error running 'batch': Cannot run program "vendor\bin\rector" (in directory "E:\xampp\htdocs\contentbroker"): CreateProcess error=2, System can't find file.
Has anyone successfully run rector von Windows? Hat settings are neccessary?
Regards: Chris
请先登录再写评论。
Sorry, not sure if understood the "installed with composer" part. Is it installed globally or you have it installed within the project?
btw, here is Rector on Windows with a `rector/rector` installed via the project `composer.json`:
Thank you for your quick reply. Yes, I installed rector in the project with composer,json.
Your screenshot is interesting. Looks like you defined your CLI-Interpreter c:\PHP806\php.exe.
This calls
in my vendor/bin directory I have
In my constallation the rector file (without extension) is executed, or parsed by the php-cli.which outputs it's content (the shell skript).
So maybe your system autodetects that php-CLI shoud execute
instead of
?
Looks like I found the problem. Installed the environment on another machine and there it worked finde. So I checked the vendor/bin/rector file and found the content to be completly different :
So obviously the problem is known, but the composer on my first machine installs a different, outdated rector version, also it's called
on both machines... any idea, why composer acts different?
In my case, "C:\PHP806\php.exe" was taken from the PHP CLI Interpreter IDE settings.
I wonder if it worth removing the 'vendor' folder from the affected project and run the "composer install" again, would it do the trick?
Problem solved. It needed a composer self-update and reinstall of rector/rector with the latest composer version to enable the PHP wrapper generation by composer for PHP Versions < 8.0.