An advice about Xampp

For 20 years I have used lampp (apachefriends): easy to install and configure; but now I wonder if it would not be better use native KDE-Neon (Kubuntu) apache/php/mysql server.
First to get constant updates, and secondly to avoid compatibility problems, that now and again can raise.
What about?

You should revise your title to be XAMPP, not lampp.

1 Like

Not sure which Linux Derivate you are using but normally it’s super easy to install Apache, PHP and MySQL with the standard package manager in a few minutes. So for Linux I see no advantage in using xamp.

2 Likes

If your local dev is Linux, install the standard LAMP stack with your package manager like @Thallius said.

If your local dev is Windows, use one of the many wamps available. For one, it can be quite problematic, even for someone experienced to install the individual components of a LAMP stack on Windows, let alone the time it takes to do it. The wamps allow for a click and play to get the whole stack installed. No experience necessary. Depending on which one you use, switching php versions or adding something else to the stack is a click away.

Currently, Laragon is the “best” wamp for windows due to a few features the others don’t do such as automatic virtual hosts. Adding/switching alternate Php versions is also very simple as well as adding other software to the stack such as MongoDB, Redis, nginx, nodejs or whatever.

https://laragon.org/

3 Likes

done!

But I have Linux, not Windows…

In that case, just use the normal LAMP stack that you would on any server.

20 years ago, or so, I had a lot of troubles to install and configure the server. Now I will try…

20 years ago, it was troublesome to install a LAMP stack. :grinning:

These days, really easy with package managers.

1 Like

Sure is. On Ubuntu-flavor Linux you can just do:

sudo apt install lamp-server^
4 Likes

Thank you. I will try it.

In the event @web148 doesn’t want to just install LAMP and may want to install different packages for their environment, then it’s easily obtainable by installing each package individually.


First install the proper libraries and add the PPA repository to your machine.

sudo apt-get -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php

After that, do

sudo apt-get -y update

Then install PHP.

sudo apt-get -y install php8.1 php8.1-mysql libapache2-mod-php8.1

By installing PHP like this, it also defaults to installing Apache as well. If you want to use something like NGINX instead of Apache, that’s fine as well, just install NGINX and configure it to use php-fpm. If you want to use the MySQL server, then you can easily do that by doing

sudo apt-get -y install mysql-server

If you want to use a different database engine than MySQL, that’s fine as well.

Downloading phpMyAdmin is fairly easy. All you just got to do is download it from the official site. Then configure it and put it in a spot where you can tell either Apache or NGINX where it’s located. I generally just put it in /var/ because it’s easier to find.

Installing self-assigned SSL is easy as well, but you’ll get the warning page since it’s self-assigned and not authorized by a certificate authority. That’s fine though for development sake.


On a side note, I generally alias all of these things to make installing packages way way more easier for me. I alias the install, purge, update, upgrade, and autoremove functions. So to update, all I gotta type is

install php8.1

To uninstall PHP, I just do

uninstall php8.1

Which runs the purge command and uninstalls the package I specify for me. To update and upgrade, I just do

$: update
$: upgrade

Indeed, after trying this way, I have now a lot of troubles.
Not with apache/php, but with mysql: a real nightmare.
How set root password, f.e., and where is phpmyadmin, and thousand of logs in mysql folder. Maybe I have only to learn, but so far Xampp was much simpler to configure.

So in all installations done on any Linux distro, the default root password is never set. You have to do that manually. To do this, there’s a few steps you got to take.

1.) Stop the MySQL service

sudo service mysql stop

2.) Then in the terminal using root access, browse to /etc/mysql/. Then edit the my.cnf file. Add at the bottom of the file this configuration.

[mysqld]
skip-grant-tables

3.) Save and exit that file. Then restart the mysql service.

sudo service mysql restart

4.) After that, you can log into the root account on MySQL with no password.

mysql -u root

5.) After that, do USE mysql; to change to the mysql table. Next, change the password for the root account by doing

UPDATE user SET authentication_string=PASSWORD('YOUR_PASSWORD_HERE') WHERE User='root';

Please change the password YOUR_PASSWORD_HERE to the password you intend to use.

Optional: If you want to set the password type to native mysql password, you can do this

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

6.) Otherwise, flush the privileges by doing FLUSH PRIVILEGES;.
7.) Lastly, go back into the my.cnf file and remove the lines below as we no longer need that configuration

[mysqld]
skip-grant-tables

8.) Restart the MySQL service

sudo service mysql restart

Then you should be able to login with your new root password.

mysql -u root -p

You have to download it from phpmyadmin.net. You have to also configure that as well once downloaded. Once you’re able to log into the MySQL server using phpMyAdmin, you should go into your phpMyAdmin folder and look for the sql folder. Then copy all of the contents from the create_tables.sql file into the SQL tab on phpMyAdmin, any SQL tab will do. Even if you’re in a database that isn’t for phpMyAdmin, you can still execute those SQL content and it’ll still put the data in the right place. This just gets rid of that error you see at the bottom when you get to the dashboard because phpMyAdmin relies on those tables to be created since those are the phpMyAdmin schema.


To be fair, it’s only simple because XAMPP and other 1-button click solutions are just that. They are 1-button click so you barely need to know where to go to configure it. These solutions are generally geared towards beginners.

I know how to install the entire PHP environment starting from Apache down to SSL simply because I’ve done my complete research on it and found the best possible ways to install it. I’ve created video guides here https://www.sitepoint.com/community/t/installing-the-php-environment-spaceshiptrooper/320645 to install the entire PHP environment on Windows 7 and 10, macOS (all versions starting from Yosemite down to Mojave), and lastly even in Ubuntu.

1 Like

Thank you. I will see.

One of the bigger problems now is the file ibdata1: I used symlink ibdata1 from my data partition to the lampp folder (/opt/lampp/var/mysql) and so I was able to sync my databases between different PC.
With this ubuntu native mysql it seems impossible symlink ibdata1: mysql doesn’t start.

Do you still have access to XAMPP? If so, I’d suggest backing up your data into an SQL file before proceeding further. Then import it back in with the new installation.

Creating symbolic links for MySQL is very very tricky. So I wouldn’t do it unless you know what you’re doing. On my personal iMac, I’ve done this as well, but I found out it could break at anytime so I tend to keep backups in case it does.

If my theory is correct, you’d have to create a symbolic link for the actual MySQL folder and not just ibdata1.

1 Like

Done, but unsuccessfully. I guess that the problem is (also, at least) another ibd file (mysql.ibd), not present in xampp, maybe because of a different mysql release (7 in xampp, and 8 in ubuntu mysql).
Any way, I that I should use phpmyadmin: which kind of default connection is with mysql?

It’s because the files are all wrong. If you really wanted to restore your databases by using the original files, I’d suggest backing up your mysql folder that came with the XAMPP setup. Then just create a symbolic link to the mysql folder. You’ll have to stop and start the MySQL server though. I believe that’s how it’s done. It has something to do with some of the files not aligning up right. So that’s why you need to create symbolic links for the entire folder and not just the ibdata1 file. The files have to also be the original files that were on your XAMPP setup. You can’t just copy and paste a few files and hope that it works. Whatever you had in your XAMPP setup, that’s how it should be restored.

phpMyAdmin is already built to use the MySQL connection so all you’d have to change is create a config.inc.php file from that config.inc.sample.php file that comes with phpMyAdmin. You’ll have to add in a blow_fish secret string, but just go to here. Upon going to that website, it should give you a random blow_fish secret string already. So copy that and paste it into your config.inc.php file. Uncomment these lines

// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Those are phpMyAdmin’s schemas. You don’t have to modify anything else in that file.

1 Like

What happens at this moment is the non -functioning of the MySQL server:

mysql.service: Main process exited, code=exited, status=1/FAILURE
mysql.service: Failed with result 'exit-code'.
Failed to start MySQL Community Server.

I tried to remove and the reinstall mysql server (or rather, something, because all the server would be a disaster). Nothing to do.
It’s quite a mess: it is as if it were of extreme fragility.