473,226 Members | 1,396 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,226 software developers and data experts.

fsockopen problem

Hi, I am trying to complete a post using fsockopen but I'm getting the
following error:

"Unable to find the socket transport "ssl" - did you forget to enable
it when you configured PHP?

I am running php 5.1.4 with apache 2 on fedora core 4. When I
configured php I did it like this:
../configure --with-apxs2=/usr/sbin/apxs --with-mysql

All I'm trying to achieve is to get a response from the neteller test
server, the response will be an error as the numbers I'm sending it are
garbage, but I'm not bothered about that, I just want to be able to
send the request and get the response back. I've searched google for a
while but can't figure out why my code isn't working, I know there were
problems with windows platforms with php4 but obviously, that is not an
issue here...
Thanks in advance, my code is below...
Angus

<?php
//SIMULATES A (HTTP POST) FORM SUBMISSION
//www.zend.com/zend/spotlight/mimocsumissions.php
//takes 2 parameters: associative array containing data to be sent to
server, DNS or IP of server
//returns $result array with lines of response
function post_it($datastream, $url)
{
//replace http:// with the empty string, get host, get resource
$url = preg_replace("@^https://@i", "", $url);
$host = substr($url, 0, strpos($url, "/"));
$uri = strstr($url, "/");

//construct request body: vars and their values
$reqbody ="";
foreach ($datastream as $key => $val)
{
if (!empty($reqbody))
$reqbody .= "&";
$reqbody .= $key."=".urlencode($val);
}

//construct post request to be sent to server, include size of reqbody
$contentlength = strlen($reqbody);
$reqheader = "POST $uri HTTP/1.0 \r\n";
$reqheader .= "Host: $host\n";
$reqheader .= "User-Agent: PostIt\r\n";
$reqheader .= "Content-Type: application/x-www-form-urlencoded\r\n";
$reqheader .= "Content-Length: $contentlength\r\n\r\n";
$reqheader .= "$reqbody\r\n";

//connect to server, send POST request, read result, close socket
$socket = fsockopen("ssl://".$host, 443, $errno, $errstr);

if (!$socket)
{
echo "host: ".$host."<br>";

echo "<p>&nbsp;</p>";

$result["errno"] = $errno;
$result["errstr"] = $errstr;
return $result;
}
fputs($socket, $reqheader);
while (!feof($socket))
{
$result[] = fgets($socket, 4096);
}
fclose($socket);
return $result;
}
?>

<HTML>
<HEAD>
<TITLE>NETeller Transfer</TITLE><META HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
<?php
$data["merchant_ID"] = 123;
$data["merch_transid"] = 123;
$data["test"] = 1;
$data["amount"] = 123;
$data["currency"] = "USD";
$data["net_account"] = 123;
$data["secure_id"] = 123;

$result = post_it($data,
"https://www.neteller.com/gateway/netdirectv4.cfm");

if (isset($result["errno"])) {
$errno = $result["errno"];
$errstr = $result["errstr"];
echo "<B>Error $errno</B> $errstr";
exit;
}
else {
for($i = 0; $i < count($result); $i++)
echo $result[$i];
}
?>
</BODY>
</HTML>

May 20 '06 #1
6 45879
tim

mu**@hotmail.co.uk wrote:
Hi, I am trying to complete a post using fsockopen but I'm getting the
following error:

"Unable to find the socket transport "ssl" - did you forget to enable
it when you configured PHP?

I am running php 5.1.4 with apache 2 on fedora core 4. When I
configured php I did it like this:
./configure --with-apxs2=/usr/sbin/apxs --with-mysql


Hi

My guess is that either mod_ssl is not installed for apache or it is
installed but the configuration lines for mod_ssl are commented out in
httpd.conf (like it was on suse9 for me). apxs will only enable ssl
functions in php if mod_ssl is up and running

So check mod_ssl is available + enabled in apache then try recompiling
php with

./configure --with-apxs2=/usr/sbin/apxs --with-mysql --enable-ssl

Tim

May 20 '06 #2
tim wrote:

mu**@hotmail.co.uk wrote:
Hi, I am trying to complete a post using fsockopen but I'm getting the
following error:

"Unable to find the socket transport "ssl" - did you forget to enable
it when you configured PHP?

I am running php 5.1.4 with apache 2 on fedora core 4. When I
configured php I did it like this:
./configure --with-apxs2=/usr/sbin/apxs --with-mysql


Hi

My guess is that either mod_ssl is not installed for apache or it is


Wrong. You are getting confused about servers and clients - mod_ssl is what
runs on the server. The OP is talking about the client end of an SSL
connection. I had a quick look at the PHP docs and it doesn't tell you the
option for client SSL. Trying with a copy of 5.0.4 I've got
handy, ./configure --help suggests:

--with-openssl[=DIR] Include OpenSSL support (requires OpenSSL >= 0.9.6)

YMMV. Alternatively, as a quick hack, set up a stunnel connection.

C.
May 20 '06 #3
tim

Colin McKinnon wrote:
tim wrote:

mu**@hotmail.co.uk wrote:
Hi, I am trying to complete a post using fsockopen but I'm getting the
following error:

"Unable to find the socket transport "ssl" - did you forget to enable
it when you configured PHP?

I am running php 5.1.4 with apache 2 on fedora core 4. When I
configured php I did it like this:
./configure --with-apxs2=/usr/sbin/apxs --with-mysql


Hi

My guess is that either mod_ssl is not installed for apache or it is


Wrong. You are getting confused about servers and clients - mod_ssl is what
runs on the server. The OP is talking about the client end of an SSL
connection.


I know the difference but I failed to point out the difference clear in
my post and there are good resons in this case to make suggest mod_ssl
is installed.

The OP is going to be submitting details to neteller and I assumed they
will be submitted to him over the web.

When processing banking info over the web its best to have a secure
connection between the web browser->server/php script as well as
between the script/merchant bank. This would need mod_ssl installed in
the server as well as the ssl client functions enabled in php and this
is why I talked about mod_ssl in apache being needed.

Of course I should have said in my post that mod_ssl isnt needed to
enable the the ssl functions in php so thanks for pointing it out.

Tim

May 21 '06 #4
Thank you for the reply.... However, I forgot to mention in my
initial post that if I try it with a normal http post on port 80 it
still throws an error: Something like:

"Unable to find the socket transport "http" - did you forget to enable
it when you configured PHP?

Can someone check to see if the code I've got does actually send the
request and get a response on their system?

Thanks

May 21 '06 #5
tim

Eh Lit wrote:
Thank you for the reply.... However, I forgot to mention in my
initial post that if I try it with a normal http post on port 80 it
still throws an error: Something like:

"Unable to find the socket transport "http" - did you forget to enable
it when you configured PHP?

Can someone check to see if the code I've got does actually send the
request and get a response on their system?

Thanks


Its worked ok for ssl and port 80 on my gf's pc. There was a http 400
error but it was only a missing carriage return in $reqheader .= "Host:
$host\n";

My only suggestion is recompile php with --enable-sockets as well as
--with-openssl like Colin said earlier.

The full response from neteller was

<HTML>
<HEAD>
<TITLE>NETeller Transfer</TITLE><META HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
HTTP/1.1 200 OK
Connection: close
Date: Sun, 21 May 2006 01:00:03 GMT
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/6.0 Geobytes-GeoSelect/2.1.0.1
Set-Cookie:
WEBTRENDS_ID=80.192.149.30-3837753504.29785201::380E735293EA42E24D4975C6BB5EC 4EF;
path=/; expires=Mon, 21-May-2007 01:00:03 GMT

<?xml version="1.0" encoding="ISO-8859-1"?><netdirect version="4.0">
<approval>no</approval>
<error>1020</error>
<custom_1>none</custom_1>

<custom_2>none</custom_2>
<custom_3>none</custom_3>
</netdirect>

</BODY>
</HTML>

May 21 '06 #6
tim
Thank you for the reply.... However, I forgot to mention in my
initial post that if I try it with a normal http post on port 80 it
still throws an error: Something like:

"Unable to find the socket transport "http" - did you forget to enable
it when you configured PHP?
My only suggestion is recompile php with --enable-sockets as well as
--with-openssl like Colin said earlier.
I made a big mistake. I thought fsockopen was one of the socket
functions and needed enabling. It isn't. Its one of the network
functions and is always available.

By chance I got the exact same message you had when I tried
fsockopen('http://servername.com',80) but itr workde when I tried
fsockopen('servername.com',80)
From the looks of http://uk.php.net/manual/en/transports.php the right

way to do a normal http request with fsockopen is using 'tcp://' not
'http://'.....Also tcp:// is assumed if by default if one isn't
specified and http:// isnt recognised.

Tim

May 21 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Chris | last post by:
Hi All, I've been puzzling over this, but can't find a satisfactory answer anywhere. I'm not sure if the problem is in my code, or if it's something to do with the PHP/Apache set-up (probably...
2
by: Colin Bell | last post by:
I'm stuck on a problem with getting data from a XML data stream. This stream is large and trying to use fsockopen to get the stream down. I've tetsed the code by telneting into the machine/port...
9
by: fipaj1992 | last post by:
Hi! I have very big problem with fsockopen() function. It is very important... That's code: <?php $test = fsockopen ('chrome.pl', '8080'); ?>
1
by: Syl | last post by:
Hi group - I have a database table with 4 columns that hold a url. I am selecting each url and I need to check to see if it is valid. I assumed I could use the fsockopen command. I've had to...
1
by: Henry16 | last post by:
Never seen such a situation ! Do you have once faced this problem ? We use a fsockopen to retrieve a content from a URL . The content is dispalid corretly on a page on one of our servers. But...
8
by: Yoko | last post by:
So I am using php version 4.3.9 and lets say i have a file on the server called tester.php so i am using fsockopen to point to that file but it gives me a error below. $fh =...
6
by: henryrhenryr | last post by:
Hi I'm really hoping for some ideas! I have been setting up phpmailer on my server and it was working nicely on my local server so I uploaded to my live server and tested. The mystery is that...
0
by: smokenlinks | last post by:
I am working on a script and i get this error Warning: fsockopen() : unable to connect to https://www.alertpay.com:443 (Unable to find the socket transport "https" - did you forget to enable it...
5
by: aswathip | last post by:
I am new to sockets and fsockopen(). I am trying to send SMS using a gateway. But the fsockopen always shows the following error. Warning: fsockopen() : unable to connect to alertbox.in:80 (A...
0
by: VivesProcSPL | last post by:
Obviously, one of the original purposes of SQL is to make data query processing easy. The language uses many English-like terms and syntax in an effort to make it easy to learn, particularly for...
3
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 3 Jan 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). For other local times, please check World Time Buddy In...
0
by: jianzs | last post by:
Introduction Cloud-native applications are conventionally identified as those designed and nurtured on cloud infrastructure. Such applications, rooted in cloud technologies, skillfully benefit from...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 7 Feb 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:30 (7.30PM). In this month's session, the creator of the excellent VBE...
0
Git
by: egorbl4 | last post by:
Скачал я git, хотел начать настройку, а там вылезло вот это Что это? Что мне с этим делать? ...
0
by: MeoLessi9 | last post by:
I have VirtualBox installed on Windows 11 and now I would like to install Kali on a virtual machine. However, on the official website, I see two options: "Installer images" and "Virtual machines"....
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: Aftab Ahmad | last post by:
Hello Experts! I have written a code in MS Access for a cmd called "WhatsApp Message" to open WhatsApp using that very code but the problem is that it gives a popup message everytime I clicked on...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.