I had a server set up with the following installed and running:
Ubuntu 20.04
NGINX 1.17.10
PHP 7.4.5
The PHP installation does have the PDO SQLSRV driver installed and working properly.
I needed to add PHP 5.6 to the same server for an older web site. I was able to successfully install PHP 5.6. but I can't seem to get the SQLSRV driver part to install properly.
I had previously installed the mssql tools on the server when setting up PHP 7.4:
apt-get install msodbcsql17 -y
apt-get install mssql-tools
apt install unixodbc-dev
pecl install sqlsrv
pecl install pdo_sqlsrv
In trying to set it up for 5.6, I did follow the steps for the original install. I ran the following commands:
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/5.6/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/5.6/mods-available/pdo_sqlsrv.ini
phpenmod -v 5.6 sqlsrv pdo_sqlsrv
pecl config-set php_ini /etc/php/5.6/fpm/php.ini
ls /etc/php/5.6/fpm/conf.d/*sqlsrv.ini
All commands ran successfully. I then added the following lines to the relevant php.ini file /etc/php/5.6/fpm/php.ini
extension=sqlsrv.so
extension=pdo_sqlsrv.so
I reloaded and restarted php5.6-fpm and then restarted NGINX. PHP 5.6 is successfully installed and I can see the info by running phpinfo(). I got no errors during installation. However, under PDO, PDO Drivers is showing no value. I also confirmed that sqlsrv_connect is not recognized.
I know it would be ideal not to have multiple versions of PHP or to have installed them at separate times, but I didn't have a choice on this project. Do I need to install a separate version of sqlsrv and pdo_sqlsrv on the box, or am I just missing something in the installation?
Related
I am trying to enable sqlsrv drivers for php8.1 on Ubuntu 20.0. It is not showing the extension in phpinfo().
When trying to check the sqlsrv module with commmand php -m, the output is like this:
I have followed official documentation below:
https://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver16
Tried to add extension(extension=pdo_sqlsrv.so, extension=sqlsrv.so) in /etc/php/8.1/apache2/php.ini
I am not sure what went wrong, any suggestion is appreciated.
The output of phpinfo() for php7.4:
The output of phpinfo() for php8.1:
Here are the things:
PHP 7.4 and 8.1 installed on my machine.
The sqlsrv drivers works fine for php7.4 version
When trying to install/enable for php8.1 it does not work at all.
What I am missing here?
You can try this:
1. switch to php8.1
2. sudo pecl uninstall -r sqlsrv
3. sudo pecl uninstall -r pdo_sqlsrv
4. sudo pecl -d php_suffix=7.2 install sqlsrv
5. sudo pecl -d php_suffix=7.2 install pdo_sqlsrv
6. sudo service apache2 restart
Note that -r, --register-only do not remove files but only register the packages as not installed.
Checkout this resource for more info.
https://github.com/microsoft/msphpsql/issues/1145#issuecomment-649682231
I have a web-based PHP script named portail, so I want to make it functional on Ubuntu.
I installed Xampp 5.6 , Firebird 2.5 under Ubuntu, then I uncommented the library:
"extension=php_pdo_firebird.dll"
and I made the specific configuration for php5 and firebird
(https://mapopa.blogspot.com/2009/04/php5-and-firebird-pdo-on-ubuntu-hardy.html),
but he always shows me the following message
could not find driver localhost/portail
Screenshot:
You should install the required php extension if not already installed by default installation process. Php extensions are binaries which help php do extra things which can not without them. For example there is another well-known php extension called X-Debug which helps php developers debug their code.
First of all check that you have this php_pdo_firebird extension installed (or not), using Ubuntu CLI (Command-Line Interface):
installed system-wide by default:
php -m | grep -i pdo-firebird
installed using your package manager:
dpkg --get-selections | grep -i php-pdo-firebird
If none of the above returned a result, then you do not have that extension installed. you should install it using your preferred package manager:
sudo apt-get update -y
sudo apt-get install -y php-pdo-firebird
Try this
php -v
apt-get install -y php<your php version>-interbase
Experiencing difficulty getting PECL stats module loaded in Vagrant dev environment.
Dev Env: Ubuntu 14.04, Nginx 1.4.6, PHP 5.6.24.
Production copy running successfully.
Prod Env: Ubuntu 14.04, Nginx 1.4.6, PHP 5.5.9.
We need to migrate the application to a new server. New server node is the same env setup as the Dev/Vagrant box listed above. Only environment change between current node & new node is PHP version.
PHP5.6-FPM service is running as expected in Vagrant. The application works as expected, until attempting to run any php stats methods, for example stats_standard_deviation().
PECL stats 1.0.5 has been installed & verified.
Confirmed the correct php.ini via phpinfo() prior to adding stats extension.
Confirmed the stats.so extension exists.
I've restarted services, restarted the Vagrant box. I've confirmed stats module is loaded in production via phpinfo() & am using the same method to confirm it is NOT loading in dev. Just can't seem the get the extension loaded.
Any help is greatly appreciated !
This was a two-part issue.
An incorrect PECL dependency was installed. php5-dev was the pkg installed, which directed the PECL installer to use PHP API 20121212
PECL config looks for standard PHP 5 install by default, v. 5.5.9. That needed to reflect the correct settings. Possibly using either pkg-config or autoconfig packages would rectify this hiccup by assisting PECL in the PHP detection process.
Solution
Clean out the PECL stats module, as well as the php dev package.
Set PECL config.
Then re-install correct versions.
# Clean out previous ver.
$ pecl uninstall stats-1.0.5
$ apt-get remove --purge php5-dev
# Install correct PECL dependency
$ apt-get install php5.6-dev
# Set PECL config to correct PHP install
$ pecl config-set php_bin /usr/bin/php5.6
$ pecl config-set php_ini /etc/php/5.6/fpm
# Re-install PECL package & restart PHP-FPM service
$ pecl install stats-1.0.5
$ service php5.6-fpm restart
I want to install the v8js extension for PHP5.5 on Ubuntu 12.04 but can't make it working.
When I try to install the v8js extension version 0.2.0 (latest) with PECL, I have this message:
configure: error: libv8 must be version 3.24.6 or greater
ERROR: `/tmp/pear/temp/v8js/configure --with-v8js' failed
If I try to install an old version, I have a compilation error. This message is very similar to my issue: Install v8js for php on ubuntu
How can I fix this issue?
EDIT: I couldn't install it on Ubuntu 14.04 with PHP5.5, even with a PHP downgrade with PHPbrew to PHP 5.4. However, using Ubuntu 12.04 with PHP 5.4 works great. I didn't try the downgrade from PHP 5.5 to 5.4 on Ubuntu 12.04.
in case you can't find libv8-dev or libv8-dbg, you can find the correct version by run command
~$ apt-cache search libv8
libv8-3.14-dbg - V8 JavaScript engine - debugging symbols
libv8-3.14-dev - V8 JavaScript engine - development files for 3.14 branch
libv8-3.14.5 - V8 JavaScript engine - runtime library
libv8-dev - V8 JavaScript engine - development files for latest branch
then you can run
~$ sudo apt-get install libv8-3.14-dev libv8-3.14-dbg g++ cpp
then you can try to install v8js via pecl by running
~$ sudo pecl install v8js-0.2.0
if that command return error like this
configure: error: libv8 must be version 3.24.6 or greater
ERROR: `/tmp/pear/temp/v8js/configure --with-v8js' failed
you can try to install v8js-0.1.3 instead by running
~$ sudo pecl install v8js-0.1.3
then edit your php.ini to add v8js extension
~$ echo "extension=v8js.so" >> /etc/php5/cli/php.ini
Open your terminal/console
sudo apt-get install libv8-dev libv8-dbg g++ cpp
Make an update sudo apt-get update
Try sudo pecl install v8js-0.2.0 (or other version i.e.: sudo pecl install v8js-0.1.3)
Edit your php.ini (Check: Where is my php.ini file?) file by adding: extension=v8js.so.
Restart server
If it the extension still doesn't work, try to edit /etc/php5/conf.d/v8js.ini and add extension=v8js.so and restart server again.
Hope this helps.
These other answers work well and I used v8js-0.1.3 for the past 1.5 years but after needing to upgrade to PHP 7 I needed a better solution as v0.1.3 doesn't compile with PHP 7 (something to do with php_smart_str being renamed to php_smart_string).
After a couple hours of frustrating research and compiling libv8 myself, I didn't want to have to go through this whole process on every server I provisioned.
Anyway, I found this site which points you to a launchpad PPA site that provides a couple different ubuntu packages with the 5.1 and 5.2 libv8 libraries.
I ran these commands (please don't add repositories of 3rd party devs without understanding the risks).
sudo apt-add-repository ppa:pinepain/libv8-5.2
sudo apt-get update
sudo apt-get install libv8-5.2-dev
sudo pecl install v8js-1.1.0
(Thanks #JeyKeu for suggesting to add "apt-get update" to these commands)
I couldn't get v8js-1.3.0 or 1.2.0 to build, but 1.1.0 worked well. I checked the changelog and found that the latest updates are not necessary in my circumstance anyway.
I'm using Ubuntu Xampp (Lampp) and currently on MongoDB 1.5.3 driver.
I need to downgrade to 1.4.5, but when re-installed the downgraded driver, it does not change in phpinfo(). Yes, I have restarted Apache.
So, how do I uninstall the current one and install the downgraded version?
Update: 2018-06-20:
PECL package mongo is now deprecated, you should use mongodb package instead:
sudo pecl install -f mongodb-1.4.4
Original answer
You can upgrade to a specific version of a driver by using pecl:
sudo pecl install -f mongo-1.4.5
If you get a pecl: command not found error you will need to install PEAR package:
sudo apt-get update && sudo apt-get install php-pear
You can use this command to check that you have the correct version installed:
sudo pecl info mongo
Or you can check php configuration directly with:
php -i | grep -A 1 MongoDB