peachpiecompiler / peachpie

PeachPie - the PHP compiler and runtime for .NET and .NET Core
https://www.peachpie.io
Apache License 2.0
2.33k stars 202 forks source link

Can run adminer? #1023

Open bnuzhouwei opened 2 years ago

bnuzhouwei commented 2 years ago

Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consist of a single file ready to deploy to the target server. Adminer is available for MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, MongoDB and others via plugin.

Can run adminer on net core?

https://www.adminer.org/

It the most popular database adminer tools, and also default adminer of mysql, postgres, etc in docker.

jakubmisek commented 1 year ago

Hello @bnuzhouwei ,

thank you for your question.

I've tried adminer, the mysql version (en only), and it may work after some fix.

This is my build output with all the compile-time warnings:

\adminer-4.8.1-mysql-en.php(21,117): warning PHP5018: Deprecated: Method 'each' has been deprecated. 
\adminer-4.8.1-mysql-en.php(132,119): warning PHP5011: Unreachable code detected
\adminer-4.8.1-mysql-en.php(133,7): warning PHP5011: Unreachable code detected
\adminer-4.8.1-mysql-en.php(531,6): warning PHP5006: Call to undefined function: 'openssl_verify'
\adminer-4.8.1-mysql-en.php(345,12): warning PHP5026: Missing the call of parent::__construct from Min_DB::__construct.
\adminer-4.8.1-mysql-en.php(360,30): warning PHP5006: Call to undefined function: 'mysql_unbuffered_query'
\adminer-4.8.1-mysql-en.php(361,89): warning PHP5006: Call to undefined function: 'mysql_info'
\adminer-4.8.1-mysql-en.php(172,26056): warning PHP5018: Deprecated: Method 'set_magic_quotes_runtime' has been deprecated.
\adminer-4.8.1-mysql-en.php(340,547): warning PHP5006: Call to undefined function: 'adminer_object'
\adminer-4.8.1-mysql-en.php(669,1): warning PHP5006: Call to undefined function: 'foreign_keys_sql'
\adminer-4.8.1-mysql-en.php(760,522): warning PHP5006: Call to undefined function: 'recreate_table'

adminer login page shows up: image

although, upon loging, it crashes on a one Not Implemented function:

System.NotImplementedException: The method or operation is not implemented.
         at Pchp.Library.Session.session_regenerate_id()
         at <Root>.adminer-4_8_1-mysql-en_php.<Main>(Context <ctx>, PhpArray <locals>, Object this, RuntimeTypeHandle <self>) in adminer-4.8.1-mysql-en.php:line 575

--

So at least, session_regenerate_id() needs to be implemented in PeachPie - BUT - this is difficult to implement on ASPNET; so a little change to Adminer would be easier.

jakubmisek commented 1 year ago

adminer.zip sample project

.\PeachPie-AdminerTest\PeachpieWebApp2.Server> dotnet run