PHP Warning in Typo3DatabaseBackend line 158 after updating DDEV to 1.19 - typo3

After updating DDEV to 1.19 I get following error after backend login in TYPO3 11.5.8:
PHP Warning: gzuncompress(): need dictionary in
/var/www/html/public/typo3/sysext/core/Classes/Cache/Backend/Typo3DatabaseBackend.php
line 158
I already tried a lot of things:
I have tried all officially PHP versions which are possible with DDEV.
I have downgraded doctrine/dbal 2.13.8, 2.13.7, 2.13.6, ...
I have downgraded MariaDB 10.3 to 10.2
Nothing works. So it needs a deeper view of the problem:
In Typo3DatabaseBackend.php at line 158 I have added
$tmp = gzuncompress($data);
With help of xdebug I can see that uncompress works without any problems. So, IMO it can't be a zlib problem.
As next step I have converted the compressed $data with bin2hex($data) into $tmp and in my database I have tried to HEX the value, too:
SELECT uid, CONVERT(content USING utf8) FROM cache_rootline WHERE uid = 1;
Interesting point:
Before: 789c4d904172c3200
In DB: 0x783f4d3f41723f200
Select: 783f4d3f41723f200
Nearly each 2nd byte is correct, but the other bytes are totally wrong.
I have exported my MariaDB data and switched to MySQL 8.0 and imported the data again. Because of some utf8mb4_unicode_ci incompatibilities I have recreated all cache tables with help of Installtool of TYPO3.
After login to TYPO3 backend I got following error:
General error: 3988 Conversion from collation utf8_general_ci into utf8mb4_unicode_ci impossible
I have searched full TYPO3 project, but I can't find utf8_general_ci anywhere.
Do you have any idea, what could be wrong?
Thank you for your help.
Stefan

On new DDEV project four LocalConfiguration looks something like that:
'DB' => [
'Connections' => [
'Default' => [
'charset' => 'utf8',
'driver' => 'mysqli',
],
],
],
and DDEV creates following to your AdditionalConfiguration.php
'DB' => [
'Connections' => [
'Default' => [
'dbname' => 'db',
'driver' => 'pdo_mysql',
'host' => 'db',
'password' => 'db',
'port' => '3306',
'user' => 'db',
],
],
],
Maybe you have added following to your configuration to create new tables with a specific collation:
'DB' => [
'Connections' => [
'Default' => [
...
'tableoptions' => [
'charset' => 'utf8mb4',
'collate' => 'utf8mb4_general_ci',
],
],
],
],
Do you see the problem? The charset option of LocalConfiguration.php was NOT overwritten in your AdditionalConfiguration. So, you have a charset miss-match in your configuration. Please keep them in sync.
Either set collation back to utf8_unicode_ci or add:
'charset' => 'utf8mb4',
in AdditionalConfiguration.php
Have fun with TYPO3
Stefan

For me the easiest way was to replace the pdo_mysql driver with mysqli.
Because I'm only using MariaDB and my database was utf8_general_ci encoded, this was the easiest fix/help.

Related

MongoDB with Laravel 8 Authentication Failed upon php artisan migrate

I Installed mongoDB in my laravel 8 project for first time, to explore mongoDB functionalities
When I run php artisan migrate I got:
MongoDB\Driver\Exception\AuthenticationException
Authentication failed.
at D:\xampp\htdocs\Mongo\mongonews\vendor\mongodb\mongodb\src\Command\ListCollections.php:115
my : D:\xampp\htdocs\Mongo\mongonews\config\database.php I set the following:
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'options' => [
// here you can pass more settings to the Mongo Driver Manager
// see https://www.php.net/manual/en/mongodb-driver-manager.construct.php under "Uri Options" for a list of complete parameters that you can use
'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
],
],
And this is my .env:
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=mongonews
DB_USERNAME=root
DB_PASSWORD=
Thanks Geaks, appreciate your help to start my first time mongo db based laravel app
All the best.
It was solved by removing username from DB_USERNAME
although It is supposed to be "root" in my case!!!!
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=news
DB_USERNAME=
DB_PASSWORD=
Hope this helps who ever faced this problem.

typo3 APCu error

in my typo3 project we use a company internal web space. Currently an error message appears as shown in the picture.
On this APCu cannot be installed in the PHP configuration due to internal defaults.
How can I modify my typo3 instance so that I can do without APCu?
Go to the Install Tool and checkout the Configuration Presets. "Extbase object cache" is one of them. Change it to the database option.
I found the solution by myself.
In LocalConfiguration.php I searched for APCu and changed 'extbase_object' to the following:
'SYS' => [
'caching' => [
'cacheConfigurations' => [
'extbase_object' => [
'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\NullBackend',
'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\VariableFrontend',
'groups' => [
'system',
],
'options' => [
'defaultLifetime' => 0,
],
],
],
],

SQLSTATE[HY000] [1045] Access denied for user - OVH Eloquent

For a project I use Slim 3 - Twig and Eloquent. On development mode, all works perfectly, but on production, hosted in the OVH shared server, I can't access to the database.
I'm hundred percent sure of credentials and the database was not created right now.
This is my code :
$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($config['db']);
$capsule->bootEloquent();
$capsule->setAsGlobal();
Where $config['db'] contains the informations required by Eloquent :
$config = [
'settings' => [
'debug' => true,
'displayErrorDetails' => true
],
'db' => [
'driver' => 'mysql',
'host' => '****.mysql.db',
'database' => '****',
'username' => '****',
'password' => '****',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => ''
]
]
What I have to do to make it work ?
Ok ... I get the solution.
... Suspense ...
I have to remove spaces around the big arrows in my beautiful formatted array.
Yes. I'm gonna cry.

ZfcUserDoctrineMongoODM Configuration examples

I am trying to configure ZendFramwork 2 to use MongoDB as the storage for user Authentication.
I already have installed what I believe are the correct modules and have a correctly installed instance of ZF2 running on Nginx. I also have an instance of Mongo running and I am already using this for another project. The modules declaration in application.config.php looks like this
'modules' => array(
'Application',
'ZfcBase',
'ZfcUser',
'ZfcUserDoctrineMongoODM',
'DoctrineModule',
'DoctrineMongoODMModule'
)
Documentation is a bit thin on how to configure the system to get it working. Can anyone provide any code fragments around configuring the database settings to allow Mongo to run with ZfcUser, this is where I am at a loss now.
Any help, clues or cheat sheets would be greatly appreciated.
Darren Breeze
Have a look at Doctrine Mongo ODM module readme https://github.com/doctrine/DoctrineMongoODMModule :
copy
vendor/doctrine/doctrine-mongo-odm-module/config/module.doctrine-mongo-odm.local.php.dist
into your application's config/autoload directory, rename it to
module.doctrine-mongo-odm.local.php and make the appropriate changes.
With this config file you can configure your mongo connection, add
extra annotations to register, add subscribers to the event manager,
add filters to the filter collection, and drivers to the driver chain.
So you have something like this at your autoload config:
<?php
return array(
'doctrine' => array(
'connection' => array(
'odm_default' => array(
'server' => 'localhost',
'port' => '27017',
// 'connectionString' => null,
// 'user' => null,
// 'password' => null,
// 'dbname' => null,
// 'options' => array()
),
),
....
'configuration' => array(
'odm_default' => array(
... 'default_db' => 'myappdb',
)
)
So tune it and try to register at user/register. Collection name is user by default.

can't make code generator with PostgreSQL

i have a problem in using code generator with PostgreSQL database, i've make configuration in main.php..
...
'modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'123wasis85',
'ipFilters'=>array('127.0.0.1','::1'),
),
),
...
'db'=>array(
'connectionString' => 'pgsql:host=127.0.0.1;port=5432;dbname=yii_first',
'emulatePrepare' => true,
'username' => 'postgres',
'password' => 'anghauz',
'charset' => 'utf8',
),
...
but it still making error result when i used crud generation, this is the error..:
...
CDbConnection failed to open the DB connection: could not find driver
C:\BitNami\apache2\htdocs\yii\framework\gii\generators\crud\CrudCode.php(44)
...
i make it in localhost n using bitnami..
please help me guys for the solutions..
Please go to php.ini file in the installed php folder. Uncomment the below lines.
extension=php_pdo_pgsql.dll
extension=php_pgsql.dll
It worked for me.