Updated with the basic information I know at the moment.
Additional Issues with Hostinger
In addition to needing to install with Composer (requirements of the Automatic Updates module), Hostinger's Cloud hosting plans are not able to set the correct permissions on the site, regardless of how Drupal is installed.
In order to have the server access for a proper Drupal installation, you must purchase a VPS Plan from the start. If you purchased a Cloud Hosting plan, they can't automatically migrate it to a VPS plan. You have to purchase a separate VPS Plan and move your sites yourself.
For all the good it will do, I complained to Hostinger's Chat Bot that they shouldn't allow Drupal installations on a hosting plan that can't support the correct permissions.
Adding an update so that everyone knows work is ongoing. I believe the issue I'm seeing (Project Browser can't install modules) is because:
Project Browser needs the Automatic Updates module.
I believe this is the case, based on this message on /admin/config/development/project_browser
The ability to install modules via the Project Browser UI requires Package Manager version 2.5 or newer. Package Manager is provided as part of the Automatic Updates module.
The Automatic Updates module MUST be installed with Composer
This is noted on the project page for the Automatic Updates module, and I got the following error:
External dependencies for Package Manager are not available. Composer must be used to download the module with dependencies.
I'm a dev, and I know how to use Composer (and I know that's what we all should be using to maintain modules), but this creates an interesting challenge. Budget hosts don't always make it simple to use Composer to manage projects, and Hostinger doesn't offer SSH access on some lower-tier plans. The person who doesn't know how to use Composer will inevitably install through the UI, because it's easy.
Next steps
I think my plan has SSH access, so I'll go through the steps to reinstall everything with Composer and re-test. And it looks like I'll be rewriting this documentation. :)
I continue to have other challenges with Hostinger and Image Styles, which I think are permissions related, despite giving wide-open perms on sites/default. I'm keeping a running list of all the oddities I encounter.
Thanks @ressa! I will circle back to this soon and get some info added to the child page, hopefully with resolution on setting permissions.
Unfortunately, after enabling the Project Browser module, it is not able to Add and Install modules. Suspect file system permissions issues.
Expected result (Add and Install button)
Actual result (View Commands buton)
Opened thread in Drupal Slack
https://drupal.slack.com/archives/C01UHB4QG12/p1718991635577659
Project Browser Install Notes
There are multiple ways to manage a Drupal site and module installation on Drupal. These instructions assume no previous Drupal experience or experience with Composer, repo management or local development.
Install with URL
On Hostinger, the easiest way to install Project Browser is through the module tarball URL. Visit the Project Browser page on Drupal.org, scroll to the Releases section and click on the latest release.
- Right-click on either of the download options and Copy Link Address.
- In your Drupal site, navigate to /admin/modules/install
- Paste the URL and click Continue
- After the module is added, the following screen will appear. Click the link to Enable newly added modules.
- On the /admin/modules screen, Search for Project Browser, Check the box next to it, click Install.
- After successful installation, a new Browse tab will appear on the /admin/modules screen.
- Click Browse to begin browsing and installing additional modules.
Install with Upload or File Manager
NOTE: Use this option only if you are familiar with Drupalโs architecture.
Hostinger allows you to manage the file system of your website directly through the File Manager tool. The File Manager tool may be helpful for other tasks, as well.
Access File Manager by first selecting the Manage button on the Home tab of your Hostinger dashboard, located to the right of your selected hosting plan.
Expand the Files section on the left sidebar and click File Manager.
This opens a new window with direct access to the file system of your website. Your installation location and directories may vary.
Upload and unzip the module tarball to the modules directory.
In your Drupal site, navigate to /admin/modules. Locate and Enable the Project Browser module.
Install/Manage with Git
NOTE: Use this option only if you have a Github account, and are familiar with Git version management and Drupalโs architecture.
Hostinger provides instructions for connecting to an existing Github repository.
This process works for existing repositories that already contain a Drupal site. It allows you to deploy that existing site to your Hostinger account. However, the opposite does not seem to apply (you cannot take a Drupal site installed through Hostinger and push that to a repo).
(Needs further review)
Install with Composer
Hostinger provides instructions for using Composer with their Web Premium, Web Business, and Cloud plans.
This requires SSH access, which may not be available on lower-tier plans.
Detailed Instructions with Images
https://kimdomenick.github.io/projectbrowser/InstallProjectBrowser/
Steps to Install
Drupal Install Notes
When setting up a hosting account on Hostinger, a series of prompts guides you through selecting a CMS. They promote Wordpress and their own website builder, but other options are available, one of which is Drupal.
- Use the Auto Installer tool from the Websites tab to start the Drupal installation.
- Click Select on the Other card.
- Search for Drupal and then click Select.
- Type a Website Title, Admin email, username and password. Under the Advanced section, optionally specify an installation path and database options.
- Choose a Drupal version, language, PHP version and Application Update settings. Click Install.
- After the installation completes, access your Drupal site on the Websites tab of your hosting Dashboard.
Detailed Instructions with Images
kdomenick โ created an issue.
@phenaproxima โ I don't see Config Page in the sandbox codebase, either in the modules/contrib directory or in composer.json. Weird one.
On the GraphQL moduleโฆ I worked with GraphQL 3.x on both Drupal 9 and 10. It is compatible with those core versions; however, I think the issue here may be that GraphQL 3.x has a different project architecture than GraphQL 4.x.
3.x has a sub module called โGraphQL Coreโ that does not exist in the 4.x version. (In 3.x, the sub module shows up separately in the Extend UI and in core.extension.yml.)
If youโre running GraphQL 4.x and try to install the GraphQL Responsive Image module (which relies on 3.x), it makes sense that it fails, because it canโt find that GraphQL Core sub module.
@jonycp - Are you running GraphQL 4.x?
But the issue is describing a situation where composer can't resolve the dependencies and it is failing ungracefully. Do we have a way to reproduce this with a different module?
@sime โ Yes. On a clean install of Drupal with Gitpod, I had an ungraceful failure with the installation of Config Pages:
StageEventException: Problem detected in lock file during stage operations. There appear to be no pending Composer operations because the active lock file (/var/www/html/composer.lock) and the staged lock file (/tmp/.package_manager9d13a6a4-2b13-4d12-a842-06aa7b39c4a8/pF8CYYRk6EtjiRw3UCKJSTXcbtrAJwZX/composer.lock) are identical.
Although, this probably constitutes a separate issue ^^, it's an example of a failure that a non-developer would likely not be able to resolve.
I have a Drupal site on Hostinger. I will test Project Browser there. I can open a new child issue and assign it to myself, if that's the preferred flow?
We definitely want to test on Hostinger, if no one has done so already, because they are listed on the Drupal.org/hosting page.
After upgrading to D10, we had the same issue and error with JSONAPI endpoints that contained Duration fields. Endpoints with Duration fields were unavailable and this error displayed in the error logs when trying to access them:
TypeError: Drupal\serialization\Normalizer\PrimitiveDataNormalizer::normalize(): Return value must be of type ArrayObject|array|string|int|float|bool|null, DateInterval returned in Drupal\serialization\Normalizer\PrimitiveDataNormalizer->normalize() (line 36 of /var/www/html/web/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php).
Just confirming that the patch resolved the issue for us.