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.
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:
composer.json
- You can move the composer.json
file to /var/www
, to be able to use that as base;"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
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.
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
In my case, after spending half a day, I realised the error was because I missed this line:
require 'vendor/autoload.php';
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!
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.