Installation of TYPO3 v9.5 fails in last step because of missing PHP library "argon2i" - typo3

I am trying to install TYPO3 v9.5.3 for the first time and fail in the last step of the installation routine (after submitting the form with the login details for the admin user).
As far as I could track this issue down, I think the problem is that I don't have the required library for argon2i compiled into PHP.
Now I found a very similar problem description here, but I am not able to change the algorithm in the process of the installation.
Is there a way to use "bcrypt" or "phpass" right from the beginning (during installation)?

According to https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/PasswordHashing/Index.html, PHP 7.2 brings Argon2i support out of the box.
Also, this documentation page also says it falls back to other hashing algorithms if argon2i is not available.
So I guess that your guess about the missing lib is not the real reason.
Your question also does not explain what your actual error/problem is, so there is nothing more we can do here.

Untested but you can try to create typo3conf/AdditionalConfiguration.php before starting the installation process and put this into the file:
$GLOBALS['TYPO3_CONF_VARS']['BE']['passwordHashing']['className'] = 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\BcryptPasswordHash';

Related

License code entered, but I get a warning when editing users

Hi everyone I am experiencing a problem with my Backpack license, I bought the license for a single project, and I have inserted the license into my .Env file as described in the documentation:
BACKPACK_LICENSE=XXXX-YYY-ZZZZ-XXXX-YYY-ZZZZ.
And set APP_ENV=production.
The system seems to recognise the licence correctly (no yellow warning is shown when logging in), however when I try to edit my users, the yellow warning appears with the words: "User editing is disabled in the demo version".
What's wrong?
I should point out that I have not activated the cache, but as a test I have also run the command as suggested: php artisan config:clear, but I still get this warning.
Can anyone help me? Thank you.
It sounds like you've created your project starting from the Backpack demo. That's just an example Laravel + Backpack installation, to show off its features, it should not be used for real-life projects. Notice the demo docs page says:
Don't use this demo to start your real projects. Please use the recommended installation procedure. You don't want all the bogus entities we've created. You don't want all the packages we've used. And you definitely don't want the default admin user. Start from scratch.
I recommend you create a new Laravel project, then install Backpack on top of it, then copy-paste your custom code in that new project. That will not only fix the inability to edit things, but many other problems like the ones listed in the quote above.

Typo3 8.7: Could not analyse class: maybe not loaded or no autoloader? Keeps coming and going

I have had this problem as seen in the title in the past and I always resolved this issue by adding the psr-4 autoloader in the emconf and simply reactivate my extensions.
Now I'm facing the same problem:
Could not analyse class: maybe not loaded or no autoloader?
but I have set the autoloader correctly as always. This also happens in more than one Extension right now.. After deleting the php cache in the install tool und dump autoload and reactivating my extension, the error was gone for some time, a couple hours later its back again.. Therefore I think it must have something to do with temp files, but I can't figure out what it is exactly..
Does anyone have a solution? I have seen plenty of topics about this issue on stackoverflow, I used them in the past, but unfortunately none is working for me right now.
Important fact: This error is happening on my new server now. On my old server (with the same code in the extensions) this didn't occur and they worked fine.
Thanks in advance.
Edit: Vendornames etc. are set correctly and there are no errors in the syntax whatsoever. As I said, the extensions worked fine.
Edit2: I just found this changelog of Typo3:
https://docs.typo3.org/typo3cms/extensions/core/Changelog/8.4/Breaking-78222-ExtensionAutoloadInformationIsNowInTypo3confautoload.html
But there is no solution for the impact for none composer installations. Can someone provide one for me?
When you use composer installation and you use extensions which are not installed via composer, you need to add the autoload information in the root composer.json of your project and then run composer dump-autoload. (ext_emconf.php dont works in composer mode?)
{
...
"autoload": {
"psr-4": {
"Vendor\\ExtensionNameA\\": "public/typo3conf/ext/extension_name_a/Classes",
"Vendor\\ExtensionNameB\\": "public/typo3conf/ext/extension_name_b/Classes"
}
}
}
A possible explanation for strange timing thing "works and later not". Maybe it has something to do with the red clear cache button in the TYPO3 backend (Clear all caches). Maybe it start not working when u hit this button and cache files get cleared. Then you need to reinstall extensions to get the autoloader "temporarly" working, till the point you hit the clear all caches button again. With the solution i mentioned above, it works permanet.
Have you left any configuration in your ext_tables.php?
As the TCA configuration, which is cached, is expected in Configuration/TCA/[Override/] any code in ext_tables.php might get lost.
If you want some configuration to be executed for each run you need to put it in ext_localconf.php
Thanks for all the help, I found the solution myself now.
Actually it was not really caused by any autoloader configuration, but and old version of fpdf which apparently caused two extensions to not load their classes properly. The exception thrown was simply misleading. I have upgraded the version of fpdf and now it works properly. It is not clear to me why the same code worked a week ago and now it failed, but atleast I have found the solution to my problem.

Oops, an error occurred - after TYPO3 Upgrade 7.6 to 8.7

I tried manually upgrade TYPO3 from 7.6.6 to 8.7.16 and received: Oops, an error occurred! I can't login to TYPO3.
I apologize for the brief description but I was very tired after a many hours trying to remove the errorenter image description here. The error looks just like the image, but at the beginning there was a white screen ...
Over the years I have not had problems installing TYPO3 (still Versions 3 and 4), but I had a break in use. I do not have access to SSH. I also assume Symlink was mistakenly set by the admin, and that's why I had to do it manually.
https://docs.typo3.org/typo3cms/InstallationGuide/QuickInstall/GetAndUnpack/Index.html
Similarly, because I did not have access and I did it manually... I noticed that there are also changes in installation, perhaps a problem.
First step to do after an upgrade is to open the install-tool primary to alter tables for new requirements:
example.com/typo3/install.php
There you have to open the upgrade-wizard and follow the shown steps.
You also get the option shown to install compatibility-7, an extension that adds a compatibility-layer for older extensions. You can enter that step and afterwards still decide if to install it or not. In the wizard the logic is that the option will be shown and no matter about your decision it will be marked as done, so that it won't be shown another time again usually.
In your case it's better to follow the update-instructions rather than the install-instructions: https://docs.typo3.org/typo3cms/InstallationGuide/Upgrade/Index.html

WebApp ignores patched perl pm file

I never really came in touch with perl before, so I really hope, this is a real newbie question and I can solve the problem pretty quick...
We've one perl based web application installed on a windows 2003 server environment. The installed version contains a bug and I know where to apply the patch. Basically: I have carefully changed two lines in one of the web apps pm files.
To my surprise, the file change is ignored and I still get the same error messages with references to the old version of the file - clearly identifiable by the line numbers.
I've cleared the browser caches, restarted the web application (including apache) - no luck.
Now I think/hope that this is some kind of perl feature, but I even don't know enough of that language to ask google the right questions. One tutorial said, that perl is an interpreted language and that changes to source files are effective immediately. This isn't true for my site...
Are there some more caches/files I have to touch or delete in order to make my changes effective?
Are you sure your Perl is actually using the latest version of said pm file? There is no other version somewhere else included which is getting used?
Take a look at #INC
Step through your programming using a debugger
Sprinkle warnings around the code and see if it gets called.
Problem solved and the solution was outside perl - thanks for your patience.
The web application contained some javascript / css caching. After
deleting the caches (js-chache, css-cache)
clearing the browser cache
restarting Internet Explorer (!)
it started working again. Don't ask me why...

In Installshield, what is the best event to use to launch applications only on install, not on uninstall or repair?

We have recently moved back to InstallShield 2008 from rolling our own install. So, I am still trying to get up the learning curve on it.
We are using Firebird and a usb driver, that we couldn't find good msi install solutions. So, we have a cmd line to install firebird silently and the usb driver mostly silently.
We have put this code into the event handler DefaultFeatureInstalled. This works really well on the first time install. But, when I do an uninstall it trys to launch the firebird installer again, so it must be sending the DefaultFeatureInstalled event again.
Is their another event to use, or is there a way to detect whether its an install or uninstall in the DefaultFeatureInstalled event?
Chris, I had trouble getting the MsiGetProperty to work at all. Just adding the code that you have
string sRemove;
number nBuffer;
nBuffer = 256;
if (MsiGetProperty(ISMSI_HANDLE, "REMOVE", sRemove, nBuffer) = ERROR_SUCCESS) then
//do something
endif;
I get "undefined identifier". I tried several things to get IS to recognize it without success. After some more poking around, I realized that IS was not calling the function on uninstall in the first place. I had another function, onEnd I think that was calling the same things. After cleaning that up, I was getting the result I had expected in the beginning.
So the correct answer would be that you don't have to do anything for the code in the DefaultFeature_Installed event not to be called on uninstall.
There are MSI properties you can look at that will tell you if a product is already installed or if an uninstall is taking place. The Installed property will be true if the product is already there, so you can use it in a Boolean expression (Ex: Not Installed). The REMOVE property will be set to "ALL" if an uninstall is taking place. You might be able to condition your Firebird installation logic on these properties, which you can retrieve using the MsiGetProperty function.
Note: Property names mean different things based on case, so make sure you use the cases above.
I couldn't find any reference in the IS online help or Google to the DefaultFeatureInstalled event. Is your InstallShield project Basic MSI or InstallScript?
I am doing an InstallScript project.
I double checked the event and the function that I am using is DefaultFeature_Installed with an underscore. I have searched the Net and IS's website and have found mention of it but no definition. I asked the developer here who originally moved the code to this event, and she can't remember where or why she moved the code to this event.
I will look into MsiGetProperty this morning. Thanks for the pointer.
You can add this code to the DefaultFeature_Installed event:
string sRemove;
number nBuffer;
nBuffer = 256;
if (MsiGetProperty(ISMSI_HANDLE, "REMOVE", sRemove, nBuffer) = ERROR_SUCCESS) then
//do something
endif;
Note: the function name is case sensitive. The ISMSI_HANDLE value is a handle to the InstallShield install engine. If sRemove is equal to "ALL", which indicates an uninstall is taking place, you can skip the Firebird installation.
If you are using an InstallScript or InstallScript MSI project, you will want to handle the OnFirstUIBefore event. It is called the first time the installer is run. When the installer is launch again, the OnMaintUIBefore event is raised in its place.