I have a local application with laravel 5.5 using a mysql databse on my ubuntu18.04.1. It is hosted on a server with php7.2, and I had the same version of php in my system. All was working fine. Yesterday, I tried to connect my app with SQL Server to get data from a database, and my nightmare started.
I added the data base connection info to the database.php file in my laravel app following this format
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
All seemed to be working fine, but when I tried to retrieve data, I had a connection exception, laravel was telling me that the sqlsrv driver wasn't found. I thought that, perhaps, the sqlsrv extension wasn't enabled, so I went to php.ini to activate it, but I didn't found it, so I started to investigate and I discovered that I had to install it from the microsoft webpage. I tried in all ways to add the proper .so, I installed and deinstalled php7.2 and I don't know how php7.4 folders and modules are on my system too. I followed this site (in spanish) to install a docker and try to prevent this situation in the future. I followed it till the$ sudo docker-compose up -d nginx mysql phpmyadmin
part, then I tried to run my app and it works, it connects properly, but I cannot access to phpmyadmin viahttp://localhost:3030/
, I have phpMyAdmin Error because it doesn't find the mysqli extension.
Then I tired to runphp -S
as I used to run when I trying to connect to phpMyAdmin and I get this
$ php -S localhost:3030
[Thu Dec 10 13:17:50 2020] PHP Warning: PHP Startup: Unable to load dynamic library 'mysqli' (tried: /usr/lib/php/20170718/mysqli (/usr/lib/php/20170718/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/mysqli.so (/usr/lib/php/20170718/mysqli.so: undefined symbol: mysqlnd_global_stats)) in Unknown on line 0
[Thu Dec 10 13:17:50 2020] PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20170718/pdo_mysql (/usr/lib/php/20170718/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: mysqlnd_allocator)) in Unknown on line 0
[Thu Dec 10 13:17:50 2020] PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
[Thu Dec 10 13:17:50 2020] PHP Warning: PHP Startup: Unable to load dynamic library 'pgsql' (tried: /usr/lib/php/20170718/pgsql (/usr/lib/php/20170718/pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pgsql.so (/usr/lib/php/20170718/pgsql.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
[Thu Dec 10 13:17:50 2020] Failed to listen on localhost:3030 (reason: Address already in use)
I ranphp --ini
to find where the configuration file is and edited the extension of mysqli to enable it, now when y run againphp --ini
I get this warns
$ php --ini
PHP Warning: PHP Startup: Unable to load dynamic library 'mysqli' (tried: /usr/lib/php/20170718/mysqli (/usr/lib/php/20170718/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/mysqli.so (/usr/lib/php/20170718/mysqli.so: undefined symbol: mysqlnd_global_stats)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20170718/pdo_mysql (/usr/lib/php/20170718/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: mysqlnd_allocator)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pgsql' (tried: /usr/lib/php/20170718/pgsql (/usr/lib/php/20170718/pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pgsql.so (/usr/lib/php/20170718/pgsql.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Configuration File (php.ini) Path: /etc/php/7.2/cli
Loaded Configuration File: /etc/php/7.2/cli/php.ini
Scan for additional .ini files in: /etc/php/7.2/cli/conf.d
Additional .ini files parsed: /etc/php/7.2/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.2/cli/conf.d/10-opcache.ini,
/etc/php/7.2/cli/conf.d/10-pdo.ini,
/etc/php/7.2/cli/conf.d/20-calendar.ini,
/etc/php/7.2/cli/conf.d/20-ctype.ini,
/etc/php/7.2/cli/conf.d/20-exif.ini,
/etc/php/7.2/cli/conf.d/20-fileinfo.ini,
/etc/php/7.2/cli/conf.d/20-ftp.ini,
/etc/php/7.2/cli/conf.d/20-gettext.ini,
/etc/php/7.2/cli/conf.d/20-iconv.ini,
/etc/php/7.2/cli/conf.d/20-json.ini,
/etc/php/7.2/cli/conf.d/20-mysqli.ini,
/etc/php/7.2/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.2/cli/conf.d/20-phar.ini,
/etc/php/7.2/cli/conf.d/20-posix.ini,
/etc/php/7.2/cli/conf.d/20-readline.ini,
/etc/php/7.2/cli/conf.d/20-shmop.ini,
/etc/php/7.2/cli/conf.d/20-sockets.ini,
/etc/php/7.2/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.2/cli/conf.d/20-sysvsem.ini,
/etc/php/7.2/cli/conf.d/20-sysvshm.ini,
/etc/php/7.2/cli/conf.d/20-tokenizer.ini
and I still can't access to phpMyAdmin. When I runphp --version
I get this
$ php --version
PHP Warning: PHP Startup: Unable to load dynamic library 'mysqli' (tried: /usr/lib/php/20170718/mysqli (/usr/lib/php/20170718/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/mysqli.so (/usr/lib/php/20170718/mysqli.so: undefined symbol: mysqlnd_global_stats)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20170718/pdo_mysql (/usr/lib/php/20170718/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: mysqlnd_allocator)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pgsql' (tried: /usr/lib/php/20170718/pgsql (/usr/lib/php/20170718/pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pgsql.so (/usr/lib/php/20170718/pgsql.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.2.34-8+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Oct 31 2020 16:57:15) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.34-8+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
I need to fix this asap to continue working on my laravel application and, when it's done, I need a correct way to install the proper sqlsrv drivers to be able to connect my laravel application to the sql server database.
When I runphp -m
I get this
$ php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'mysqli' (tried: /usr/lib/php/20170718/mysqli (/usr/lib/php/20170718/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/mysqli.so (/usr/lib/php/20170718/mysqli.so: undefined symbol: mysqlnd_global_stats)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20170718/pdo_mysql (/usr/lib/php/20170718/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: mysqlnd_allocator)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'pgsql' (tried: /usr/lib/php/20170718/pgsql (/usr/lib/php/20170718/pgsql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pgsql.so (/usr/lib/php/20170718/pgsql.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib
[Zend Modules]
Zend OPcache
and this is what I have now installed with php, nginx, and sql
$ dpkg --get-selections | grep php
libapache2-mod-php7.2 install
php-common install
php-mysql install
php7.2 install
php7.2-cli install
php7.2-common install
php7.2-fpm install
php7.2-json install
php7.2-mysql install
php7.2-opcache install
php7.2-readline install
php7.4-common install
php7.4-mysql
$ dpkg --get-selections | grep nginx
libnginx-mod-http-geoip install
libnginx-mod-http-image-filter install
libnginx-mod-http-xslt-filter install
libnginx-mod-mail install
libnginx-mod-stream install
nginx install
nginx-common install
nginx-core install
$ dpkg --get-selections | grep sql
akonadi-backend-mysql install
libaprutil1-dbd-sqlite3:amd64 install
libmono-sqlite4.0-cil install
libmysqlclient20:amd64 install
libmysqlcppconn7v5:amd64 install
libqt4-sql:amd64 install
libqt4-sql-mysql:amd64 install
libqt5sql5:amd64 install
libqt5sql5-mysql:amd64 install
libqt5sql5-sqlite:amd64 install
libsqlite3-0:amd64 install
libvsqlitepp3v5:amd64 install
msodbcsql17 install
mssql-server install
mssql-tools install
mysql-client install
mysql-client-5.7 install
mysql-client-core-5.7 install
mysql-common install
mysql-server install
mysql-server-5.7 install
mysql-server-core-5.7 install
mysql-utilities install
mysql-workbench install
mysql-workbench-data install
php-mysql install
php7.2-mysql install
php7.4-mysql install
postgresql install
postgresql-10 install
postgresql-client-10 install
postgresql-client-common install
postgresql-common install
postgresql-contrib install
python-mysql.connector install
python-pysqlite2 install
Does anyone know what could I do?
If you need more info tell me in the comments and I'll update the question.
Thanks!
I tried to follow this thread to uninstall all php and php7 file and tried to reinstall php7.2, but I can't add the repository when I executeadd-apt-repository ppa:ondrej/php
becaus the terminal throws me this
Obj:1 https://download.docker.com/linux/ubuntu bionic InRelease
Ign:2 http://ppa.launchpad.net/langdalepl/gvfs-mtp/ubuntu bionic InRelease
Obj:3 https://linux.teamviewer.com/deb stable InRelease
Obj:4 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease
Obj:5 http://dl.google.com/linux/chrome/deb stable InRelease
Obj:6 http://ppa.launchpad.net/wireshark-dev/stable/ubuntu bionic InRelease
Obj:7 http://es.archive.ubuntu.com/ubuntu bionic InRelease
Des:8 http://security.ubuntu.com/ubuntu bionic-security InRelease [88,7 kB]
Des:9 http://archive.neon.kde.org/user bionic InRelease [131 kB]
Obj:10 https://packages.microsoft.com/ubuntu/18.04/mssql-server-2019 bionic InRelease
Err:11 http://ppa.launchpad.net/langdalepl/gvfs-mtp/ubuntu bionic Release
404 Not Found [IP: 91.189.95.83 80]
Ign:12 https://storage.googleapis.com/download.dartlang.org/linux/debian stable InRelease
Obj:13 https://packages.microsoft.com/ubuntu/18.04/prod bionic InRelease
Des:14 http://es.archive.ubuntu.com/ubuntu bionic-updates InRelease [88,7 kB]
Obj:15 https://packages.microsoft.com/ubuntu/16.04/prod xenial InRelease
Obj:16 https://storage.googleapis.com/download.dartlang.org/linux/debian stable Release
Des:17 http://es.archive.ubuntu.com/ubuntu bionic-backports InRelease [74,6 kB]
E: The repository 'http://ppa.launchpad.net/gnome-shell-extensions/ppa/ubuntu bionic Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
I searched for my error and found this, but it doesn't worked for me.
I tried to install php7.2 following the thread and all went well, but when I've executedsudo service apache2 restart
I got this
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
so I executedsystemctl status apache2.service
and it threw this
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
?��?�?apache2-systemd.conf
Active: failed (Result: exit-code) since Fri 2020-12-11 10:34:22 CET; 1min 31s ago
Process: 4671 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
dic 11 10:34:22 Dev-PC apachectl[4671]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directiv
dic 11 10:34:22 Dev-PC apachectl[4671]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
dic 11 10:34:22 Dev-PC apachectl[4671]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
dic 11 10:34:22 Dev-PC apachectl[4671]: no listening sockets available, shutting down
dic 11 10:34:22 Dev-PC apachectl[4671]: AH00015: Unable to open logs
dic 11 10:34:22 Dev-PC apachectl[4671]: Action 'start' failed.
dic 11 10:34:22 Dev-PC apachectl[4671]: The Apache error log may have more information.
dic 11 10:34:22 Dev-PC systemd[1]: apache2.service: Control process exited, code=exited status=1
dic 11 10:34:22 Dev-PC systemd[1]: apache2.service: Failed with result 'exit-code'.
dic 11 10:34:22 Dev-PC systemd[1]: Failed to start The Apache HTTP Server.
What could I do now? I cannot start apache service and I don't know what is failing here...
I updated my download manager to look for available repositories and bingo, the ondrej repositories were locked, I just unlocked them and tried again to adding the repositories, it worked now. I've reinstalled apache2 with and php7.2 runningsudo apt-get install apache2
and following the thread answer. But I had the same problem, so I realized that the error was showing two problems, the first problem was the missing server name and the second was that the port 80 was in use, thats why the apache2 keeps failing when trying to start. For solve the first problem, I ransudo gedit /etc/apache2/apache2.conf
and addedServer Name 127.0.0.1
and after save, the first problem was solved, I solved the second problem runningsudo lsof -i -n -P | grep ':80'
and I discovering that nginx process was using it, so I usedsudo kill [the nginx PID]
to kill the nginx processes and retried to start apache2 and now it worked. I was able to access to my database in phpmyadmin but now I had another problem, when I executephp artisan serve
in my laravel project, I got a PDOConnection.php error because there was a missing driver, and after executephp -m
I realized that was the mysql driver so I ransudo apt-get install php7.2-common php7.2-mysql php7.2-cli
and finally I had my apache2 and my php7.2 fixed! Finally thank you all for helping me!
But now I have the same problem I had when all this started, I need to install in the correct way the sqlsrv .so drivers to be able to connect my laravel app with a SQL Server database. I was trying to download the .so files from the microsoft page but that drove me to this nightmare, so does anybody knows how could I continue to installing the sqlsrv drivers correctly?
Looking for solutions, I checked again the microsoft webpage to find out which sqlsrv drivers I needed to run sql queries with php7.2, and I tried again to runsudo pecl install sqlsrv
andsudo pecl install pdo_sqlsrv
, but it didn't worked for me. Then I found another way to install the drivers without pecl, and i ransudo apt-get install php7.2-dev
and downloaded the packages withwget http://pecl.php.net/get/sqlsrv-5.3.0.tgz
andwget http://pecl.php.net/get/pdo_sqlsrv-5.3.0.tgz
(5.3.0 was my sqlsrv version for php7.2), after this I installed withpear install pdo_sqlsrv-5.3.0.tgz
andpear install sqlsrv-5.3.0.tgz
. This time it worked for me (first time it throwed to me an error telling me that there was an installed version of pdo_sqlsrv, but I ransudo pear uninstall pecl/pdo_sqlsrv
and ran again the install order, then it worked for me). Then, I tried again to runsudo pecl install sqlsrv
andsudo pecl install pdo_sqlsrv
and this time it worked! After this I ransudo phpenmod -v 7.2 sqlsrv pdo_sqlsrv
and finally I finished the php7.2 sqlsrv drivers installation in my ubuntu! I tried to run again the connection to my database on sql server and it worked.
Thanks for the help!
I updated my post with my progress solving my own question, with the help of bhucho in the comments of my post, I was able to fix my php7.2.
Looking for solutions for install the correct sqlsrv driver for my php version, I checked again the microsoft webpage to find out which sqlsrv drivers I needed to run sql queries with php7.2, and I tried again to runsudo pecl install sqlsrv
andsudo pecl install pdo_sqlsrv
, but it didn't worked for me. Then I found another way to install the drivers without pecl, and i ransudo apt-get install php7.2-dev
and downloaded the packages withwget http://pecl.php.net/get/sqlsrv-5.3.0.tgz
andwget http://pecl.php.net/get/pdo_sqlsrv-5.3.0.tgz
(5.3.0 was my sqlsrv version for php7.2), after this I installed withpear install pdo_sqlsrv-5.3.0.tgz
andpear install sqlsrv-5.3.0.tgz
. This time it worked for me (first time it throwed to me an error telling me that there was an installed version of pdo_sqlsrv, but I ransudo pear uninstall pecl/pdo_sqlsrv
and ran again the install order, then it worked for me). Then, I tried again to runsudo pecl install sqlsrv
andsudo pecl install pdo_sqlsrv
and this time it worked! After this I ransudo phpenmod -v 7.2 sqlsrv pdo_sqlsrv
and finally I finished the php7.2 sqlsrv drivers installation in my ubuntu! I tried to run again the connection to my database on sql server and it worked.
Thank you all for the help!
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Find the answer in similar questions on our website.
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.
PHP (from the English Hypertext Preprocessor - hypertext preprocessor) is a scripting programming language for developing web applications. Supported by most hosting providers, it is one of the most popular tools for creating dynamic websites.
The PHP scripting language has gained wide popularity due to its processing speed, simplicity, cross-platform, functionality and distribution of source codes under its own license.
https://www.php.net/
Laravel is a free open source PHP framework that came out in 2011. Since then, it has been able to become the framework of choice for web developers. One of the main reasons for this is that Laravel makes it easier, faster, and safer to develop complex web applications than any other framework.
https://laravel.com/
DBMS is a database management system. It is designed to change, search, add and delete information in the database. There are many DBMSs designed for similar purposes with different features. One of the most popular is MySQL.
It is a software tool designed to work with relational SQL databases. It is easy to learn even for site owners who are not professional programmers or administrators. MySQL DBMS also allows you to export and import data, which is convenient when moving large amounts of information.
https://www.mysql.com/
Welcome to the Q&A site for web developers. Here you can ask a question about the problem you are facing and get answers from other experts. We have created a user-friendly interface so that you can quickly and free of charge ask a question about a web programming problem. We also invite other experts to join our community and help other members who ask questions. In addition, you can use our search for questions with a solution.
Ask about the real problem you are facing. Describe in detail what you are doing and what you want to achieve.
Our goal is to create a strong community in which everyone will support each other. If you find a question and know the answer to it, help others with your knowledge.