Fixed Error : sh: symfony-cmd: command not found


I have upgraded a Symfony 4.2 app template to use Symfony 5.4 in order to enable the utilization of some libraries that require a newer version of Symfony. The issue arises when I run 'composer install'; I encounter this error near the end of the installation:

sh: symfony-cmd: command not found

To resolve this, we can take a couple of steps.

  1. Firstly, ensure that our composer.json file includes a requirement for Symfony Flex by running:
composer require symfony/flex
  1. If the error persists even after installing Symfony Flex, we need to verify that the symfony/flex package is allowed to execute code during Composer execution. This is particularly important since Composer 2.2.0 introduced the allow-plugins option to enhance security by controlling which Composer plugins can execute code during startup.

To ensure that symfony/flex is allowed to execute code, we should have the following configuration in our composer.json file:

"config": {
   
    "allow-plugins": {
        "symfony/flex": true
    }
}

By setting "symfony/flex": true, we explicitly allow Symfony Flex to execute code during Composer operations.


Solution 2:

To resolve the "sh: symfony-cmd: command not found" error, you need to ensure that the Symfony command-line tool is installed and properly configured on your system. 

  1. Check Symfony Installation: First, make sure Symfony is installed on your system. You can do this by running the following command in your terminal:
  2. symfony -v

    If Symfony is installed, you should see its version number. If not, you need to install Symfony. You can do this by following the installation instructions on the Symfony website.

  3. Verify Symfony Bin Directory: Ensure that the directory containing the Symfony binary is included in your system's PATH environment variable. This allows your system to find the Symfony executable when you run commands. You can check your PATH variable by running:
  4. echo $PATH

    If the directory containing the Symfony binary is not included in the output, you need to add it. You can do this by editing your shell configuration file (e.g., .bashrc, .bash_profile, .zshrc) and adding the Symfony bin directory to the PATH variable. For example:

    export PATH="$PATH:/path/to/symfony/bin"

    *You need to replace /path/to/symfony/bin with the actual path to your Symfony bin directory.

  5. Restart Terminal or Source Configuration: After updating your shell configuration file, either restart your terminal or source the file to apply the changes. You can do this by running:
  6. source ~/.bashrc

    *Replace ~/.bashrc with the path to your shell configuration file.

  7. Retry Symfony Command: Once you have verified that Symfony is properly installed and its bin directory is in your PATH, try running the Symfony command again that was causing the error. For example:
  8. symfony your-command

    *Replace your-command with the actual Symfony command you were trying to run.


Solution 3:

Based on our experience, we've found that the root cause of this error often stems from running Composer as a root user. Simply bypassing this issue with the appropriate environment variable or executing Composer as a non-root user can resolve the problem for many encountering this issue.

Alternatively, it's worth noting that if Symfony commands are not being recognized despite proper installation, it might be due to using uppercase 'Symfony' instead of lowercase 'symfony' when invoking the command.

The correct command format is:

$ symfony new SecurityDemo 5.4

However, if you're encountering difficulties even after ensuring the command is being invoked correctly, you might want to try prefacing the command with 'php', like so:

$ php symfony new SecurityDemo 5.4

Specifying 'php' before the 'symfony' command seems to address the issue for some users, even though the documentation doesn't explicitly mention it.


Solution 4:

To fix the error "'symfony' is not recognized as an internal or external command, operable program or batch file," you need to ensure that Symfony is installed correctly and its executable is added to your system's PATH environment variable. Follow these steps:

  1. Install Symfony: If you haven't installed Symfony yet, download and install it from the Symfony website. Follow the installation instructions provided there.
  2. Add Symfony to PATH:
    • Locate the directory where Symfony is installed on your system.
    • Copy the path to the Symfony binary directory. This directory contains the executable file named "symfony".
    • Next, you need to add this directory to your system's PATH environment variable:
      • On Windows:
        1. Open Control Panel and go to System.
        2. Click on "Advanced system settings".
        3. In the System Properties window, click on the "Environment Variables" button.
        4. In the Environment Variables window, under System Variables, find the PATH variable and select it.
        5. Click Edit and add the path to the Symfony binary directory to the list of paths, separated by semicolons.
        6. Click OK to save the changes.
      • On macOS and Linux:
        1. Edit your shell configuration file (e.g., .bashrc, .bash_profile, .zshrc).
        2. Add the following line at the end of the file, replacing /path/to/symfony/bin with the actual path to the Symfony binary directory:
          export PATH="$PATH:/path/to/symfony/bin"
        3. Save the file and exit the text editor.
  3. Restart Terminal or Command Prompt:
    • After adding Symfony to the PATH, close and reopen your terminal or command prompt window.
    • This step is necessary to apply the changes to the PATH environment variable.
  4. Verify Symfony Installation:
    • Once your terminal or command prompt is reopened, type the following command to verify that Symfony is recognized:
    • symfony -v
    • If Symfony is installed correctly and added to the PATH, you should see its version number printed in the terminal or command prompt.


Solution 5:

A simple solution: running the Command Line Interface (CLI) as an administrator. If this doesn't work, here's an alternative method that resolved the issue for us.

I recently faced this problem myself, and it was quite frustrating until I discovered the solution. Let me walk you through the steps I took:

  • My machine runs on Windows 10.
  • I visited the Symfony website for instructions, which you can find here.
  • I opened Command Prompt and entered c:\> php -r "readfile('http://symfony.com/installer');" > symfony.
  • Once it was ready, I ran the command: php symfony new my_project.
  • However, all my attempts failed.
  • I tried various approaches, including changing PATHs in the Windows environment settings, but nothing seemed to work.

Finally, I found the solution: I rebooted my machine, then opened Command Prompt by right-clicking its icon and selecting "Run As Administrator". I followed the steps again, and this time, it worked perfectly.

If the issue seemed to stem from errors in the .phar file creation process. By running Command Prompt as an administrator, these errors were resolved, and Symfony installation proceeded smoothly.


Solution 6:

It's often because the PATH needs to be defined. Here's a step-by-step solution that has worked for us:

First, we need to run this command each time before we want to use the symfony command:

export PATH="$HOME/.symfony/bin:$PATH"

With this setup, we should be able to run commands like symfony server:start. However, it's important to note that we'll need to execute the export command every time we reopen our terminal.

To make this solution permanent, we can add the export command to our bash profile. This ensures that the PATH is defined correctly each time we open a terminal session.