SQL Server address to connect using php - php

I use this code to connect to SQL Server 2012, but it does not work
<?php
$objConnect = mssql_connect("localhost","usr","pass");
if($objConnect)
{
echo "Database Connected.<br />";
echo mssql_error();
}
else
{
echo "Database Connect Failed.<br />";
}
mssql_close($objConnect);
?>
It always prints Database Connect Failed.
Also how can I connect to my local SQL Server from an external web server?

If your edition is SQL Server Express, you should probably be using:
$objConnect = mssql_connect("localhost\SQLEXPRESS","usr","pass");
Or if it is otherwise a named instance, then
$objConnect = mssql_connect("localhost\InstanceName","usr","pass");
If you need to connect remotely, then obviously you shouldn't be using localhost since how does the remote web server locate your localhost? You should be using one of the following (assuming the remote web server can see your machine with IP address 192.168.5.22):
$objConnect = mssql_connect("192.168.5.22\SQLEXPRESS","usr","pass");
$objConnect = mssql_connect("192.168.5.22\NamedInstance","usr","pass");
$objConnect = mssql_connect("192.168.5.22","usr","pass");
Of course your firewall must have port 1433 (and possibly 1434) open in order to accept that connection, and there are a variety of other things that can go wrong here as well.
However, a little debugging 101 suggestion. Instead of:
if($objConnect)
{
echo "Database Connected.<br />";
echo mssql_error();
}
else
{
echo "Database Connect Failed.<br />";
}
Why not:
if($objConnect)
{
echo "Database Connected.<br />";
}
else
{
echo "Database Connect Failed.<br />";
echo mssql_error();
}
Surely you don't need to write an error to the page when the database connects successfully. And telling us the actual error message you receive may better equip us to point you in the direction of a solution. A generic "Database Connect Failed" message that you wrote is not going to give anyone any clue about what actually went wrong. But I bet mssql_error() might!

Related

I am not able to execute select records from a table in database in google sql cloud using php

<?php
define('DB_NAME', 'xp_database'); // DATABASE
define('DB_USER', 'valli'); // ROOT DEFAULT MYSQL
define('DB_PASSWORD', 'Valli123'); // PASSOWORD
define('DB_HOST', '127.0.0.1'); // LOCAL IF YOU USE LOCAL.
$data=array();
$i=1;
$link = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if($link === false)
{
die("ERROR: Could not connect. " . mysqli_connect_error());
}
else
{
echo "Connected to database";
}
// Attempt select query execution
$sql = "show databases";
if($result = mysqli_query($link, $sql))
{
if(mysqli_num_rows($result) > 0)
{
echo "<table>";
echo "<tr>";
echo "<th>userid</th>";
echo "</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['user_id'] . "</td>";
echo "</tr>";
// Free result
//set mysqli_free_result($result);
}
}
else
{
echo "No records matching your query were found.";
}
}
else
{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);
?>
I have enabled the Admin API in google cloud.
Connection is successful. But retrieval using select query is not successful. Please tell me what is missing in this. Is there any other setting that I have to do. I have migrated the data from local database to mysql cloud database.
If you are using App Engine to connect to Cloud SQL, bear in mind that you will need to enable Cloud SQL proxy since Google App Engine connects from inside of Google servers to your Cloud SQL instance via proxy.
Nonetheless, if what you would like to do is connect from outside with pure PHP code, you can still do it without using the Cloud SQL proxy.
For connecting from outside using pure PHP code you will need to authorize your IP from your Cloud SQL instance, as shown here.
Then, you should modify your code in order to change localhost or 127.0.0.1 to your Cloud SQL instance public IP (taking into account the other variables like username, password and the database name that you would like to connect to).
For finding your Cloud SQL's public IP, you can refer to here.
Finally, if you would like to look around PHP on Google App Engine, you can do it by checking the documentation here.
I hope this helps.

How to connect php app to compose for mysql on IBM Bluemix?

I currently working on PHP app which is run on blumix and I have used the following code to connected to this app to Compose for MySQL.But the connection has failed and shown me an error message on the browser " lastapp.eu-gb.mybluemix.net is currently unable to handle this request. HTTP ERROR 500"
the code below has been used to create the connection.
enter link description here enter image description here
When executing this code I could connect to your database:
<?php
$conn = mysqli_connect("sl-eu-lon-2-portal.11.dblayer.com", "admin", "FWXJWBNMHRFNUOVG", "compose", 27707);
if (!$conn) {
echo "Error!";
die();
}
else {
echo "Success!<br>";
echo "Details: ".mysqli_get_host_info($conn);
}
mysqli_close($conn);
?>

access oracle DB on remote linux server using php

I want to access an Oracle database that is on a remote Linux server with my company's intranet.
Currently I can access it through Excel and a System DSN on my Windows 7 machine. But I am running into difficulties with multiple queries in my excel spreadsheet, so I want to create a web page that does the same thing using PHP.
I have the name of the server that the DB is on, but I cannot get any response, either good or bad from my queries. I have read about web
Here is an example of the connection script:
//Data Source=username/password#//myserver:1521/my.service.com;
echo "set up db connection.<Br>";
$db = oci_connect('userid', 'password', 'server/db');
if (!$db) {
echo "no db. <br>";
$e = oci_error();
if (!$e) {
echo "no oci errors. <br>";
}
else {
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
}
else {
echo "DB, yes <br>";
}
if ($db->connect_error) {
echo "Connection errors. <br>";
die('Connect Error ('. $db->connect_errno .') '. $db->connect_error);
}
else {
echo "no connection errors.<br>";
}
echo 'Success, db info: '. $db->host_info .'.<br>';

not connecting to the database

To connect mssql from my android application, I wrote the following script:
<?php
$myServer= "*****";
$myUser="*****";
$myPass="***";
$db="*****";
echo "hi";
$dbhandle = mssql_connect($myServer, $myUser, $myPass);
echo $dbhandle;
if($dbhandle) {
echo "success";
} else {
echo "failed";
}
$database = mssql_select_db($db);
?>
When I test it in a browser, it's showing only "hi" and it's not executing remaining lines of code. What would be the problem here?
You have not enabled the mssql module in PHP. If you find the error logs, it would say something like "mssql_connect is not a function".
The mssql support built into PHP has been broken for some time. I would suggest following the instructions on this page to help you get it configured.

LDAP and PHP connection failure

I am trying to connect to a secure LDAP server (using LDAPs) via PHP, but I am having problems with it. I get the following error
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in /var/www/test.php on line 16
I works when I try to connect without LDAPs, but it is required that I use LDAPs because I am going to be dealing with sensitive information.
I am using the following code
<?php
// basic sequence with LDAP is connect, bind, search, interpret search
// result, close connection
echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ds=ldap_connect("ldaps://server"); // must be a valid LDAP server!
print $ds;
if ($ds) {
echo "<br><br>Binding ...";
$r=ldap_bind($ds); // this is an "anonymous" bind, typically
// read-only access
echo "Bind result is " . $r . "<br />";
echo "Searching for (sn=S*) ...";
// Search surname entry
$sr=ldap_search($ds, "ou=people,o=server.ca,o=server", "uid=username*");
echo "Search result is " . $sr . "<br />";
echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "<br />";
echo "Getting entries ...<p>";
$info = ldap_get_entries($ds, $sr);
echo "Data for " . $info["count"] . " items returned:<p>";
print_r($info);
// for ($i=0; $i<$info["count"]; $i++) {
// echo "dn is: " . $info[$i]["dn"] . "<br />";
// echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />";
// echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />";
// }
echo "Closing connection";
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>";
}
?>
The problem is not related to the actual binding process (invalid credentials) as the warning would be a different one if the LDAP server could not authenticate your credentials. But as Paul Dixon noted the use of ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3) should be required - even though I don't think that this is the cause of your problems.
Which LDAP server type are you connecting to? OpenLDAP, Active Directory or something else?
What's the operating system of the computer running your PHP program?
Are you using a self-signed SSL certificate on the LDAP server and is the certificate authority for the given certificate trusted by the machine running your PHP program?
Which port does the LDAP server run on? 636 would be the "official" port for LDAPS. Perhaps you can add the port explicitly to the server address: ldaps://<<server>>:636.
ext/ldap has some issues with SSL/TLS secured connections. You can try to add
TLS_REQCERT never
to the ldap.conf (/etc/ldap.conf or /etc/ldap/ldap.conf on *nix-based systems) or for Windows machines create a ldap.conf with the above content in C:\OpenLDAP\sysconf\ldap.conf (the path must be an exact match as it's hard-coded into the extension).
It appears to be a problem using SSL/TLS on some servers with recent PHP versions. Not sure why. You can refer to my post at: Problems with secure bind to Active Directory using PHP
One of the more likely causes, is the cause from Stefan. To make sure that this is really the case, you can use:
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
before your ldap_connect. This will print a more sane error message to log (typically ssl cert not valid, ref. Stefan Gehrig)
Although old, I have encountered the same issue and wanted to provide some insight for future readers.
Part of the problem was out-of-date OpenSSL libraries, 0.9.6 vs 1.0.0 (which worked).
After updating OpenSSL on the server, it was noted that PHP lost support for OpenSSL.
You can check support for modules with the following from the command line:
php -m
Or
echo phpinfo(INFO_MODULES);
From the browser.
Also, there have been a lot of issues with SSL Support for LDAP when using the OCI8/Oracle LDAP libs in my professional experience. On Debian platforms, Libldap-2.4.2-dev packages work best.
Additionally, you should look at the connection logs on the LDAP server. I can almost guarantee that you will see an error referring to SSLv3 and missing a CA for the certificate.
By default, PHP looks for the CA file on UNIX systems in, make sure it is readable by the PHP invoker (user via cli, Apache user, etc..):
/etc/pki/CA
This is not necessarily a PHP issue, but a configuration issue with Secure LDAP. Please see this PHP bug report and this OpenLDAP thread.
The OpenLDAP thread above has a snippet of a working OpenLDAP config for reference.
Some other things to check is your services definitions in /etc/services. Make sure you have the following:
ldaps 636/tcp # LDAP over SSL
ldaps 636/udp
I think you just need to set the ldap protocol version to be 3
echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ldap_server = 'ldaps://server';
$ldap_port = '636';
$ds = ldap_connect($ldap_server, $ldap_port);
if ($ds)
{
//add this
if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))
{
fatal_error("Failed to set LDAP Protocol version to 3, TLS not supported.");
}
echo "<br><br>Binding ...";
$r=ldap_bind($ds); // this is an "anonymous" bind, typically
// read-only access
echo "Bind result is " . $r . "<br />";
echo "Searching for (sn=S*) ...";
// Search surname entry
$sr=ldap_search($ds, "ou=people,o=server.ca,o=server", "uid=username*");
echo "Search result is " . $sr . "<br />";
echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "<br />";
echo "Getting entries ...<p>";
$info = ldap_get_entries($ds, $sr);
echo "Data for " . $info["count"] . " items returned:<p>";
print_r($info);
// for ($i=0; $i<$info["count"]; $i++) {
// echo "dn is: " . $info[$i]["dn"] . "<br />";
// echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />";
// echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />";
// }
echo "Closing connection";
ldap_close($ds);
}
else
{
echo "<h4>Unable to connect to LDAP server</h4>";
}
On UNIX "man ldap.conf" = ... SYNOPSIS /usr/local/etc/openldap/ldap.conf ...
Write TLS_REQCERT never in /usr/local/etc/openldap/ldap.conf
and set ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)
This work in my project on Nginx+PHP-fpm:
nginx/1.6.0
php55-5.5.15
php55-ldap-5.5.15
openldap-client-2.4.39_1
What saved my day after reading and trying out solutions from allover the web and SO, was to use a ldaps uri without the port specified in it.
So instead of this: ldaps://example.com:636 I had to use this: ldaps://example.com and it now works like a charm.
I was setting this up on Ubuntu 16.04 with PHP7.3 runing through Nginx and php-fpm.
A full code example:
try{
$ldapUri = "ldaps://example.com";
$ldapUsername = 'username';
$ldapPassword = 'password';
$ldapConn = ldap_connect($ldapUri);
if($ldapConn){
ldap_set_option($ldapConn,LDAP_OPT_NETWORK_TIMEOUT,10);
if(!ldap_set_option($ldapConn,LDAP_OPT_PROTOCOL_VERSION,3)){
print 'Failed to set ldap protocol to version 3<br>';
}
ldap_set_option($ldapConn, LDAP_OPT_REFERRALS,0);
$ldapBind = ldap_bind($ldapConn, $ldapUsername, $ldapPass);
if ($ldapBind) {
echo "LDAP bind successful...";
//DO LDAP search and stuff
ldap_unbind($ldapConn);
} else {
echo "LDAP bind failed...";
}
}
}catch(Exception $e){
print($e->getMessage();
}
Try to enable "anonymous binds" on your LDAP-Server or use a correct bind (username / password).
like cn=ldapauthuser,ou=accounts,dc=example,dc=com

Categories