<p>You have to create the folder where you want to include your plugins by yourself. There are no requirements how you name it. Let's say you want to create the folder <code>plugins</code> in your Craft folder, then you have to include the plugin in your <code>composer.json</code> like this</p>

<pre><code>"require": {
   "php": "&gt;=7.0.0",
   ....
   "namespace/pluginhandle": "your version",
   "secondred/form-builder": "^1.0" (&lt;--- example how it could look like)
},
"repositories": [
{
  "type": "path",
  "url": "plugins/yourPluginFolderName"
},
{
  "type": "path",   
  "url": "plugins/form-builder" (&lt;--- example how it could look like)
},
....
</code></pre>

<p>Then you'll need access to your server via ssh and do <code>composer update</code></p>

CC BY-SA 3.0
2018-02-12T16:29:48.370Z
Thanks for your reply Robin, I'll try that out. My shared hosting doesn't allow  cmd line access, is there another way to perform the composer update?
Christian Rochford
CC BY-SA 3.0
2018-02-12T16:52:33.473Z
You can download the project with the entire database, copy it into your local xampp/wampp/lampp (...) run the composer update there and upload all files afterwards. That's the way we handle it
Robin Schambach
CC BY-SA 3.0
2018-02-22T09:21:57.163Z
Sorry for the delayed reply Robin, that's a great tip thanks a lot!
Christian Rochford
CC BY-SA 4.0
2019-08-06T08:58:57.257Z
Why `composer update`? Why not `composer install`? Update will update all of the packages and you can get into problems
Mladen Janjetovic
CC BY-SA 4.0
2019-08-06T09:16:11.450Z
Because in case there is already a locked composer file it won't install the newly added package. Composer install only installs all dependencies in the composer lock (if there is one). In some cases the new package won't be downloaded and included to your project if you don't run "composer update"
Robin Schambach
CC BY-SA 3.0
2018-02-12T14:37:11.653Z
2018-02-12T14:37:11.653Z
Robin Schambach
<p>I'm trying to manually install a plugin <a href="https://github.com/jmx2inc/picpuller-for-craft3" rel="nofollow noreferrer">Pic Puller</a> for Craft 3 Beta.</p>

<p>My shared hosting won't allow enabling of <code>allow_url_fopen</code> so it can't be done via the plugin store within the dashboard. </p>

<p>Any docs I checked are telling me to add the plugin files to <code>/craft/plugins/</code> but I'm not seeing this directory in Craft 3. </p>

<p>I tried adding it to the <code>/modules/</code> directory but this didn't work for me.</p>

<p>Thanks!</p>

<plugins><craft3>
Manual Plugin installation on Craft 3
# Manual Plugin installation on Craft 3

(Asked by: username_0 on 2018-02-12)

I'm trying to manually install a plugin [Pic Puller](https://github.com/jmx2inc/picpuller-for-craft3) for Craft 3 Beta.

My shared hosting won't allow enabling of `allow_url_fopen` so it can't be done via the plugin store within the dashboard.

Any docs I checked are telling me to add the plugin files to `/craft/plugins/` but I'm not seeing this directory in Craft 3.

I tried adding it to the `/modules/` directory but this didn't work for me.

Thanks!

**Tags:** plugins, craft3

---

## 1 answers

### Answer by username_1 on 2018-02-12. Score: 7 | Accepted answer

You have to create the folder where you want to include your plugins by yourself. There are no requirements how you name it. Let's say you want to create the folder plugins in your Craft folder, then you have to include the plugin in your composer.json like this
"require": {
   "php": ">=7.0.0",
   ....
   "namespace/pluginhandle": "your version",
   "secondred/form-builder": "^1.0" (<--- example how it could look like)
},
"repositories": [
{
  "type": "path",
  "url": "plugins/yourPluginFolderName"
},
{
  "type": "path",   
  "url": "plugins/form-builder" (<--- example how it could look like)
},
....

Then you'll need access to your server via ssh and do composer update

> **Comments:**
> **username_0**: Thanks for your reply Robin, I'll try that out. My shared hosting doesn't allow  cmd line access, is there another way to perform the composer update?  
> **username_1**: You can download the project with the entire database, copy it into your local xampp/wampp/lampp (...) run the composer update there and upload all files afterwards. That's the way we handle it  
> **username_0**: Sorry for the delayed reply Robin, that's a great tip thanks a lot!  
> **username_2**: Why `composer update`? Why not `composer install`? Update will update all of the packages and you can get into problems  
> **username_1**: Because in case there is already a locked composer file it won't install the newly added package. Composer install only installs all dependencies in the composer lock (if there is one). In some cases the new package won't be downloaded and included to your project if you don't run "composer update"  

---

