I want to use NOSQL database for my mobile application back end web services. I have gone through the MongoDB document.But i am not sure will it be suitable with PHP?
And I have below queries related to the same.
Can i use Mysql and NoSQL(MongoDB) databases on the same server?
Can i use MongoDB with PHP and apache? If yes then which version of MongoDB should i use for PHP?
Is it possible to install NoSQL database if LAMP is already installed on the same machine?
Regards,
Pratibha
In following lines few short answer:
Yes. You should only install PHP Mongodb driver for your PHP version. The MongoDB PHP driver should work on nearly any system: Windows, Mac OS X, Unix, and Linux; little- and big-endian machines; 32- and 64-bit machines; PHP 5.2, 5.3, 5.4 and 5.5.
Yes. Latest version should be the best choice.
Yes. As far as I know Mongodb server relies on different ports and in standard condition there is no conflict.
Your server should have only enough resources (basically enough memory) to run everything.
Related
Am new to PHP and Nginx web server. I want to setup a 64bit Nginx web server with PHP 5.6 64bit on Windows 64bit system, but only 32bit Nginx build is available for windows officially. Is it possible to use PHP 64bit with Nginx 32bit web server?
If it is possible to use it, is there any performance impact?
There are 64bit Nginx builds available from unofficial sources, but they advice not to use this for production, so I need to stick with official 32bit Nginx build for windows.
Thanks in advance.
PHP with nginx would normally be run as a fastcgi application (https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/ ).
This would communicate over a TCP socket on windows - and therefore it doesn't matter whether it's 64bit or 32bit php at the far end.
In terms of PHP, if performance is a key driver, and your new - you mind want to consider looking at php 7 as that has a number of performance improvements over the php5 series. The development of php 7 has some benchmarks on a google docs spreadsheet at the bottom of their page https://wiki.php.net/phpng which indicates the differences
I have two RHEL servers, one to host the PHP application, one to host the MySQL server.
Database server has MySQL Enterprise version 5.6.21 installed.
While getting the application server built, I asked that the rpm MySQL-client-advanced-5.6.21-1.el6.x86_64 be installed (to match server), but the hardware people don't like this version since 5.6.27 is available which addressed some vulnerabilities.
The question is the following:
Does the mysql client version on the application server affect the database queries coming from the PHP application?
We're using PDO to connect to and query MySQL.
If we do this, does the application server even need a mysql client library?
Please let me know if I can clarify.
Thanks!
PHP uses its own library/driver to connect to MySQL databases. The MySQL-client-advanced package is just the CLI mysql client. PHP does not use this.
For PHP (and PDO), you should install php-pdo and php-mysqlnd. php-mysqlnd is the "MySQL native driver" and contains some enhancements. It also contains the mysqli class and the pdo-mysql connector.
Note: php-mysqlnd versions are unrelated to the MySQL server version.
Quote from the Mysql website
MySQL Native Driver is a replacement for the MySQL Client Library (libmysqlclient). MySQL Native Driver is part of the official PHP sources as of PHP 5.3.0.
https://dev.mysql.com/doc/apis-php/en/apis-php-mysqlnd.html
I'm trying to connect with Laravel 4 to an SQL Server database. I'm getting an error, but I think it's a PHP error, not a Laravel error. It says PDOException: could not find driver. I have the driver set to sqlsrv like another example in the database.php file. Like I said, I think this is a PHP error, not Laravel.
I'm on localhost on my Mac. Do I need to configure something in my php.ini file? I found another article that said I need to comment out a MySQL driver under PDO. I also couldn't find that line in my php.ini. But I need to connect to a MySQL database as well, anyway. What do I need to change in my php.ini file?
I found this line:
pdo_mysql.cache_size = 2000
But commenting it out did nothing even after restarting Apache.
The sqlsrv driver is a windows-only driver according to the PHP Manual (www.php.net/manual/en/sqlsrv.requirements.php). So you can't use that driver on Mac, Linux, Unix or any other operating system than the ones listed on that page.
I assume you are trying to connect to a remote SQL Server somewhere? If you're on Mac, then SQL Server wouldn't be running on your local machine, so I guess the first question is whether or not you have a SQL Server running somewhere.
Second, from the server that is running PHP, you would need to connect using either FreeTDS or ODBC with FreeTDS.
Since Laravel 4 uses PDO, you'll need to install FreeTDS and ODBC. Laravel 4 doesn't use the mssql PHP extension. It uses PDO, so mssql won't get you anywhere with Laravel 4.
If you're serving PHP from your Mac, I would say there are generally 4 different ways you could go:
The Easy, but costly way: Go to (www.macupdate.com/app/mac/23152/openlink-odbc-driver-for-sybase) and download and install OpenLink ODBC driver. This allows you to create new ODBC connections using the Sybase (MSSQL) driver on a XNIX machine. There's an installation walk-through here (wikis.openlinksw.com/dataspace/owiki/wiki/UdaWikiWeb/InstallSybaseExpressOSX). It comes with a 15 day trial, after which you would have to purchase it. As of this writing, it appears to cost somewhere in the range of $30 - $50 depending on the license you choose.
The harder, but free way: Follow http://blog.benjaminwalters.net/?p=10 (slightly outdated) to re-compile FreeTDS support into PHP on Mac (assuming you're using MAMP)
The far better, but also far more work way: Find a Virtual Machine Host software like VMWare Fusion and install a Linux server like Ubuntu 12.4. Make sure you install apache2 and PHP during the install process and then follow the steps here to get FreeTDS working on your new server machine.
Run PHP from the Windows Server that is running SQL Server
Milage will vary with each solution, and there is a learning curve in any case. I've been a PHP developer for a long time, and it took me days to figure out how to get connected to SQL Server for the first time from Linux. Thankfully, there are quite a few walkthroughs out there now, and FreeTDS has come a long way since that time.
Hope that helps. :)
I actually have this running on my setup. My best advice is to get on the Homebrew bus.
https://github.com/josegonzalez/homebrew-php is where you're going to want to look for installing PHP and related items. I don't remember exactly what I did but it wasn't particularly difficult.
First you'll need FreeTDS.
brew install freetds
Then, add Jose's formulas to your homebrew (instructions on the github page). After that,
brew install php5x --with-mssql
brew options php5x
if you need more extensions.
Based on Jon Watson's comment,
I've tried step 2, and it doesn't work. check my issue here https://github.com/laravel/laravel/issues/2180
Step 3 is broken link and I think it's the same with step 2.
I also tried linux ODBC driver for Laravel (there are 2, google it), both doesn't work too. Although my simple test php works in both DBLIB and ODBC (compiled using official microsoft odbc unix driver).
Step 4 definitely works, BUT you must use IIS for best stability.
That leaves step 1. OR,
Ditch Laravel4 and use good ol' AdoDB http://adodb.sourceforge.net/ which I've been using since 2006 and still working superbly (although not modern like Laravel) configure it using tutorial in http://docs.moodle.org/20/en/Installing_MSSQL_for_PHP
I wonder why they don't build sqlsrv driver for linux too....
I generally use linux servers and program in PHP (plus other associated technologies) with mysql databases. A client has existing ASP sites using MSSQL databases on a Windows server and wants some new sites created on their server using their MSSQL database as the main data source. I have used ASP in the past but much prefer PHP so would rather use this.
I just wanted to confirm that i'm right in saying as long as the server has PHP installed (which it does) then there's no reason I can't create a PHP site on the Windows server and just use different connectors to connect to the MSSQL db (rather than what i would usually use for connecting to a MYSQL db). Presumably (other than the different connect/query code) this would work in pretty much the same way as with a linux setup with mysql and i could then code the site in PHP but use their existing datasource?
I would be extremely grateful if anyone could confirm i'm right in saying this and if there's any other issues that might cause any problems?
Thanks so much for your help as ever,
Dave
You can enable MSSQL support in PHP on Windows. The default Windows PHP install has the php_mssql.dll extension commented out in the php.ini file. Uncomment that line, restart Apache, and it should work.
There is a supporting DLL called ntwdblib.dll that you may need to find a replacement for, as the version included with PHP may be outdated and won't work with newer versions of SQL Server. (I had this problem when setting it up.)
There are two different libraries to connect to SQL Server from PHP:
The legacy mssql extension, which has been discontinued on Windows
Microsoft's sqlsrv extension, which only works on Windows
I've basically worked with the second one and I can say it's a very interesting product. It's robust, it has a very nice interface and it's totally up-to-date. But what I like most is that it has very nice features. E.g.:
It can return dates as PHP DateTime objects
It provides a PDO driver
The only drawback of using SQL Server is that there isn't an easy way to write a cross-platform app but I understand it isn't problem in your case.
Yes, it is rather straight forweard.
You need to have the mssql library activated in php.ini. Which can be troublesom.
MSSSQL docmentation
I tried easyphp but i think it's not enough, I want an Apache / PHP / MySQL installer which has the latest PHP and MySQL version, and with curl and htaccess support.
Opensource solutions are preferred, should be windows vista compatible.
I have never heard of a PHP / mySQL emulator. What purpose would such a tool serve?
If you are looking for a ready-made installer package for Windows, containing everything necessary to install and run PHP, XAMPP is probably one of the best ones around.
WAMP Server is excellent, easy to install and easy to configure:
http://www.wampserver.com/en/index.php
If you want the last version of each piece of software, and to really do it the way you want, the best solution is to download an install each component separatly :
Apache : http://httpd.apache.org/
MySQL : http://dev.mysql.com/downloads/
And PHP : http://www.php.net/downloads.php
Of course, you'll have a bit more work to plug all those together than if using WAMP or anything like that -- but it also mean you'll know more about how they work and can be configured, which is always nice to know ;-)
Never heard of PHP or mySql emulators before. To run a php script you will need a webserver and the PHP engine to parse and execute the script. This cannot be emulated by another engine besides PHP.
I would suggest using Acquia Dev Desktop.
It installs Apache, MySQL & PHP with one click. Most importantly, unlike many other WAMP stacks, it works well under Windows Vista (32- or 64-bit). And as an extra, it installs Acquia Drupal for you as well, so if you ever want to get into Drupal development, you have everything you need to do so.
Get it at http://network.acquia.com/documentation/acquia-drupal-stack
I'm a BitNami developer and I personally suggest to use BitNami WAMPStack. It is free, it also includes phpMyAdmin for managing the MySQL databases and GUI management tool for the servers. Per your requirements, it is open source, compatible with Windows Vista and Windows 7, includes curl and htaccess support and we keep it fairly up to date.
XAMPP Lite USB
"XAMPP Lite" is an additional extra small XAMPP edition. Configured with relative paths you can use it on usb devices.