-
Notifications
You must be signed in to change notification settings - Fork 940
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document how to use a different web-root instead of 'web' #64
Comments
I put a symlink from web to docroot in the project repository, and then ignored docroot from code indexing in PHPStorm. I'm not sure if Acquia lets you serve from a symlink, but I imagine you could rename web to docroot, and then make web the symlink. |
I use 'drupal' in pantheon-systems/example-drupal7-circle-composer, and I have also seen htdocs and code. I'd like to use the same directory name in my project as is used here. It doesn't matter to me very much which one we use; if I'm going to have to rename my root directory anyway, 'docroot' is as good of a choice as any. If we can agree that it makes sense to standardize on docroot, I'll make a PR here to do it, and convert my project over as well. |
I would go with |
Okay, I will switch to |
|
Is it possible the directory name to be configurable? |
If we removed the |
The latest version of #77 makes it pretty easy to change the directory name on the fly. There are still a couple of files where it needs to be changed. Unfortunately, the |
#77 / #105 have been merged, so relocating the docroot from
We could in principal read DOCROOT from composer.json in post-install.sh, but it would still be necessary to make multiple changes to composer.json and .gitignore, so perhaps this is not worthwhile. Perhaps we should leave this as a customization to be done by the end user? |
This feels like there's enough site-specific components to this that trying to automate more probably isn't worth the effort. Let's just make this a task to document the steps above? So far they're working fine for me. |
Yes, a docs PR sounds about right. Symlink is simplest solution for many. |
After #128 now files are:
But as @weitzman is suggesting a symlink is still the simplest solution ("web" -> "any" or "any" -> "web"). |
We could follow symfonys model and add some extra config to our composer.json and use in our ScriptHandler. see https://github.com/symfony/symfony-standard/blob/master/composer.json#L53 |
That's a great idea, but I think it would need to be a feature of Composer Installers. It would be better as a feature of Composer Installers, anyway, as it seems like it would be commonly useful to be able to do replacements from extra config in destination paths -- and Composer Installers already supports replacements in paths. |
@greg-1-anderson so far composer Installers supports replacements in paths based on package $name, $vendor, $type. Do you think having project based replacements will be a feature they would take in consideration? If they won't, I would see it more like a composer script, which ask for docroot folder name, update the composer.json paths and add an extra configuration parameter to be used in ScriptHandler. |
Just wondering because I am planning on doing this. Could you create a relative symlink from |
@joelpittet Yes, some folks do that; should work in most environments. |
Could we use a composer config variable for this? I was just thinking on this and it might be a simple solution. |
See my previous comment. The docroot variable exists in a few plain text files. Some fixup is required if the user wants to select something else. |
To that remark, wouldn't it be possible to store the value of the docroot in composer config, maybe |
@nalipaz Yeah, that would work for sure. The one wrinkle is that at the moment, we use |
@greg-1-anderson I appreciate the details on that. I can't say I know how to make that work and was only speaking theoretically here since it seems the most integrated way. If I can gather a moment I might try my hand at the idea and of course others are welcome to try as well. |
I locally changed the following: To say "docroot" instead of "web" but I'm still not getting the root files in docroot like index.php. I know those come from the drupal-scaffold project but I don't have this issue when it's under /web. Is there another hidden config location I cannot find? |
Okay, I lied... Totally works it must have been a composer cache or something that kept wanting to put things in /web. Sorry. |
@cgmonroe Good idea, please submit an PR. |
The post-install script now uses Drupal Finder to locate the web root, so only .gitignore and the composer.json files would need to be modified to use a different location. |
You wouldn't necessarily want to add /docroot to .gitignore anyway, since you'd likely be on Acquia, and their culture is to commit docroot. |
The documentation should not presuppose that Acquia is the only reason someone would want to use a different directory name for the Drupal root. It would be worthwhile to discuss how to adjust the .gitignore file for environments where vendor et. al. are committed. |
Agreed, I'm just saying that in my experience jumping around between vendors and dev tools, you're getting down to edge cases with that one. That's a gold stamp :P |
I would probably add both /docroot and /web to gitignore, as these are the only two drupal webroots I've ever seen... and I've never seen them used for anything else (in Drupal project context). Or comment out /docroot with inline comment, which is the ideal for any new person reading it. |
…cument root directory name
Hi all re https://github.com/drupalcommerce/project-base/blob/8.x/composer.json Just before the installer paths there is
236d1f0 mentions installer paths. Do I also need to change web-root ? |
The previous comments referred to the changes needed when using |
@greg-1-anderson ok thanks |
quick novice question please and apologies if ive misunderstood - my webserver creates a docroot - say vhost1 - and i create a drupal project which is now accessible via browser from URL/web. If I want to be able to access the site via URL what are the steps i must follow including any tidying up.. im sure ive read that the composer.json file shouldnt be in the same folder that is visible from the web.. i guess im looking for a best practice guide here keeping it simple for the new guy! |
The best / easiest solution is to keep your code in the same place on disk, but change the docroot to |
@alexpurser – You simply have to point your vhost or domain to the |
Hi Norman im afraid im constrained by the server which creates the web root directories for vhosts directly under its vhost directory - .../vhost/A, .../vhost/B. ,,,etc. It is non trivial change on the server i am using (Nethserver dist of Centos) so, for the purposes of this question at least, im bringing it back into scope for this project if I may! |
This project does not support web hosts that require the Drupal root be at the project root. If you are using such a host, you could try looking at drupal/legacy-project. |
@alexpurser, I've solved a similar problem by placing the project in a separate directory and replace your "web-root directory" with a symbolic link to the |
This issue is about documenting the usage of a different web root. Before we can document this, we need to decide if this project should provide a symlink from If yes - than we need a PR with a If no - we can just document that it is possible to use a symlink, but there could be some side effects. |
After recommending the symlink solution in 2015, it’s not something I recommend anymore. Challenges I’ve seen include:
I think the best thing to do is to link to https://github.com/drupal/core-composer-scaffold?tab=readme-ov-file#defining-project-locations and call this done |
-1 for symlinks from me too. Can't we pick up the webdir name from composer.json in scripts? This would make it relatively easy to have the webdir changed in just composer.json. |
cool, we have 3 supporters for not doing symlinks. |
Is there no way to have a variable path name in the |
@greg-1-anderson Moving to year 2024 , can we create a symlink in pantheon hosting from Drupal webroot ? |
Acquia Cloud requires Drupal in a subdir named 'docroot' but this project uses 'web'. The 'web' name is used in scripts in addition to composer.json. Is there some better solution for changing this than find/replace? Would be good to document this somewhere (I volunteer).
The text was updated successfully, but these errors were encountered: