标签: fsockopen

php_network_getaddresses:getaddrinfo failed:名称或服务未知

这是我的代码片段

$fp = fsockopen($s['url'], 80, $errno, $errstr, 5);
if($fp){
        fwrite($fp, $out);
        fclose($fp);
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它输出:

无法连接到www.mydomain.net/1/file.php:80(php_network_getaddresses:getaddrinfo失败:名称或服务未知

我正在使用它来提交GET数据 $s['url']

我无法弄清楚为什么.任何帮助将不胜感激.

php fsockopen

60
推荐指数
4
解决办法
35万
查看次数

PHP中的套接字传输"ssl"未启用

我在PHP中启用套接字传输"ssl"时遇到了问题.当我运行我的脚本时,我收到错误:

警告:fsockopen()[function.fsockopen]:无法连接到ssl://www.my.site.com:443(无法找到套接字传输"ssl" - 您是否忘记在配置PHP时启用它? )

我正在Windows上运行IIS6,这是我到目前为止所做的尝试让它工作:

  • 取消注释php.ini中的php_openssl.dll和php_sockets.dll扩展
  • 确保PHP正在加载我所做的更改的ini文件(它是,它肯定会加载其他扩展,所以我很确定这不是问题)
  • 确保php_openssl.dll和php_sockets.dll位于正确的位置
  • 将ssleay32.dll和libeay32.dll复制到主PHP文件夹,WINDOWS文件夹和WINDOWS/system32文件夹
  • 确保Windows路径变量包含PHP的位置
  • 确保所有相关文件的文件权限都正确.

我几乎每次改变后都重新启动了IIS,但我没有运气.有什么明显的我做错了吗?无论如何要在较小的部分进行故障排除吗?(所以我可以通过消除过程找出问题......?)

不幸的是,Windows/IIS不是我的专业领域 - 我一直负责,因为似乎没有人知道任何事情.

php ssl iis-6 fsockopen

53
推荐指数
5
解决办法
14万
查看次数

如何从URL中检查文件是否存在

我需要检查远程服务器上是否存在特定文件.使用is_file()file_exists()不起作用.任何想法如何快速,轻松地做到这一点?

php curl file fsockopen file-exists

46
推荐指数
4
解决办法
10万
查看次数

无法找到套接字传输"https"

我正在使用它来检查URL的可用性:

$fp = fsockopen($url, 443, $errno, $errstr);
Run Code Online (Sandbox Code Playgroud)

我收到这个错误...

警告:fsockopen()[function.fsockopen]:无法连接到https://example.com/soapserver.php:443(无法找到套接字传输"https" - 您是否忘记在配置PHP时启用它? )在C:\ Home等等....

我正在使用IIS服务器顺便说一句,(不是我的不做!)所以我认为它与没有open-ssl有关,但我不确定.有人可以帮忙吗?

我做了一个phpinfo(),我确实有ssl,但在IMAP和cURL上,就是这样.

有任何想法吗?

php iis fsockopen

35
推荐指数
3
解决办法
7万
查看次数

如何在fsockopen中使用SSL?

我在Windows上运行PHP 5.2.6,我extension=php_curl.dllextension=php_openssl.dll在php.ini中取消注释; 因此,我可以看到以下内容phpinfo:

curl
cURL support        enabled
cURL Information    libcurl/7.16.0 OpenSSL/0.9.8g zlib/1.2.3

openssl
OpenSSL support     enabled
OpenSSL Version     OpenSSL 0.9.8g 19 Oct 2007
Run Code Online (Sandbox Code Playgroud)

我不确定启用cURL对此至关重要,但是因为它提到了OpenSSL,我认为无论如何我都会将它包括在内以保证完整性.


我想做的很简单:使用SSL向另一台服务器发出POST请求fsockopen.
到目前为止我的代码是这样的:

$host = 'www.redacted.com';
$data = 'user=redacted&pass=redacted&action=redacted';
$response = "";

if ( $fp = fsockopen("ssl:{$host}", 443, $errno, $errstr, 30) ) {

    $msg  = 'POST /wsAPI.php HTTP/1.1' . "\r\n";
    $msg .= 'Content-Type: application/x-www-form-urlencoded' . "\r\n";
    $msg .= 'Content-Length: ' . strlen($data) . "\r\n";
    $msg .= 'Host: ' . …
Run Code Online (Sandbox Code Playgroud)

php ssl openssl fsockopen

19
推荐指数
1
解决办法
3万
查看次数

用PHP连接到WebDAV?

我想使用PHP连接到WebDAV,并能够上传文件等.但是,我无法弄清楚如何连接它.我想它最终会像打开一个套接字并发送正确的头文件/命令一样简单,但我不知道我需要发送什么.我想在没有额外库/类的情况下这样做.

谁能指出我正确的方向?

php upload webdav fsockopen

12
推荐指数
1
解决办法
2万
查看次数

哪个是fsockopen和curl之间更好的方法?

我正在为Automated Recurring Billing创建一个应用程序.
请让我知道我应该选择将哪个选项发送到服务器

  • fsockeopen
  • 卷曲

为什么一个比另一个好?

php curl payment-gateway fsockopen

12
推荐指数
2
解决办法
1万
查看次数

PHP使用Fsockopen发布数据

我试图使用fsockopen发布数据,然后返回结果.这是我目前的代码:

<?php
$data="stuff=hoorah\r\n";
$data=urlencode($data);

$fp = fsockopen("www.website.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "POST /script.php HTTP/1.0\r\n";
    $out .= "Host: www.webste.com\r\n";
    $out .= 'Content-Type: application/x-www-form-urlencoded\r\n';
    $out .= 'Content-Length: ' . strlen($data) . '\r\n\r\n';
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?> 
Run Code Online (Sandbox Code Playgroud)

它应该回显页面,它回显页面,但这里是script.php的脚本

<?php
echo "<br><br>";    
$raw_data = $GLOBALS['HTTP_RAW_POST_DATA'];  
 parse_str( $raw_data, $_POST );

//test 1
var_dump($raw_data);
echo "<br><br>":
//test 2
print_r( $_POST );  
?> …
Run Code Online (Sandbox Code Playgroud)

php sockets fsockopen

10
推荐指数
2
解决办法
5万
查看次数

使用fgets/fread从fsockopen读取数据

这是我正在使用的代码:

if (!($fp = fsockopen('ssl://imap.gmail.com', '993', $errno, $errstr, 15)))
    echo "Could not connect to host";
$server_response = fread($fp, 256);
echo $server_response;

fwrite($fp, "C01 CAPABILITY"."\r\n");
while (!feof($fp)) {
    echo fgets($fp, 256);
}
Run Code Online (Sandbox Code Playgroud)

我收到了第一个回复:

OK Gimap ready for requests from xx.xx.xx.xx v3if9968808ibd.15 
Run Code Online (Sandbox Code Playgroud)

但随后页面超时.我搜索了stream_set_blocking,stream_set_timeout,stream_select,fread等,但无法让它工作.我需要读取服务器发送的所有数据,然后继续执行其他命令(我将使用imap检索电子邮件).

谢谢

php fgets fsockopen fread feof

8
推荐指数
1
解决办法
2万
查看次数

使用代理IP地址从PHPMailer发送电子邮件

我需要使用代理IP地址从PHPMailer发送电子邮件,我知道要这样做,我需要使用fsockopen函数,以便我可以连接到SMTP帐户,我也知道如果我必须连接到代理我必须再次使用fsockopen函数.但是在另一个fsockopen中使用它fsockopen是不可行的.

我有透明代理,不需要身份验证.我需要将其发送到外部电子邮件服务提供商的远程SMTP服务器.

我试过的代码:

<?php

    //SMTP params
    $server      = 'smtp.espdomain.com';
    $server_port = '25';
    $username = 'smtp_login';
    $password = 'smtp_pass';

    //Proxy
    $proxy      = '1.1.1.1';
    $proxy_port = 1111;

    //Open connection
    $socket = fsockopen($proxy, $proxy_port);

    //Send command to proxy
    fputs($socket, "CONNECT $server:$server_port HTTP/1.0\r\nHost: $proxy\r\n\r\n");
    fgets($socket, 334);

    //SMTP authorization  
    fputs($socket, "AUTH LOGIN\r\n");
    fgets($socket, 334);

    fputs($socket, base64_encode($username)."\r\n");
    fgets($socket, 334);

    fputs($socket, base64_encode($password)."\r\n");
    $output = fgets($socket, 235);

    fputs($socket, "HELO $server \r\n"); 
    $output = fgets($socket, 515);

?>
Run Code Online (Sandbox Code Playgroud)

它不起作用我不知道为什么?

可以socat命令可以帮助在这种情况下,还是有任何解决方案或替代解决方案,以实现这一目标?

php email proxy phpmailer fsockopen

8
推荐指数
1
解决办法
5024
查看次数

标签 统计

fsockopen ×10

php ×10

curl ×2

ssl ×2

email ×1

feof ×1

fgets ×1

file ×1

file-exists ×1

fread ×1

iis ×1

iis-6 ×1

openssl ×1

payment-gateway ×1

phpmailer ×1

proxy ×1

sockets ×1

upload ×1

webdav ×1