473,396 Members | 1,725 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,396 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 45891
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: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

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.