PHP Fatal error: Class 'MyApp\Chat' not found in /MyApp/chat-server.php

后端 未结 6 846
遥遥无期
遥遥无期 2020-12-29 06:49

I am trying to run the Ratchet application demo but I can\'t execute the file

This is my file structure

/var/www/src/MyApp/
/var/www/src/MyApp/chat.         


        
相关标签:
6条回答
  • 2020-12-29 06:59

    The main path for the autoloading is the location of the composer.json file, so if that lives in /var/www/src/MyApp/, the autoloading will use that as a base.

    In your case, you say the MyApp namespace can be found in the src directory (which means /var/www/src/MyApp/src). That's not true, since the file /var/www/src/MyApp/src/MyApp/Chat.php does not exists.

    You can solve this issue in 3 different ways:

    • Moving composer.json - You can move the composer.json file to /var/www, to be able to use that as base;
    • Updating autoloading (using PSR-4) - You can also use PSR-4 instead of PSR-0 and configure it as "autoload": { "psr-4": { "MyApp\\": "" } };
    • Reorganizing your files - You can also change the file structure to:

      /var/www/src/MyApp/
          src/MyApp/
                  Chat.php
          composer.json
      
    0 讨论(0)
  • 2020-12-29 06:59

    If you don't have the composer.json file and the vendor folder at root, it won't work. Also, don't touch the vendor folder (and subfolders). The folder structure must be like this:

    /composer.json
    /composer.phar
    /vendor/[misc]
    /src/MyApp/Chat.php
    

    Finally, after updating the composer.json, make sure to run an update:

    php composer.phar update
    

    This way it will work.

    0 讨论(0)
  • 2020-12-29 07:03

    You have to mention Base Path of your classes that need to be autoloaded:

    {
        "autoload": {
            "psr-4": {
                "MyApp\\": "src/MyApp/"
            }
        },
        "require": {
            "cboden/ratchet": "^0.4.0",
            "react/zmq": "0.2.*|0.3.*"
        }
    }
    

    And run

    Composer dump-autoload

    0 讨论(0)
  • 2020-12-29 07:03

    In my case, after spending half a day, I realised the error was because I missed this line:

    require 'vendor/autoload.php';
    
    0 讨论(0)
  • 2020-12-29 07:07

    I wrestled with this issue for hours and found that I was missing a few packages. I was able to fix it with this command:

    php composer.phar install --no-dev -o
    

    Here's a picture of what I saw after running: installed packages

    Hope this helps!

    0 讨论(0)
  • 2020-12-29 07:17

    Try autoloading the files first with:

    $ composer update
    

    If it still doesn't work then include the line require 'chat.php';, just at the beginning of the chat-server.php file. It worked for me.

    0 讨论(0)
提交回复
热议问题