这是我的代码片段
$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中启用套接字传输"ssl"时遇到了问题.当我运行我的脚本时,我收到错误:
警告:fsockopen()[function.fsockopen]:无法连接到ssl://www.my.site.com:443(无法找到套接字传输"ssl" - 您是否忘记在配置PHP时启用它? )
我正在Windows上运行IIS6,这是我到目前为止所做的尝试让它工作:
我几乎每次改变后都重新启动了IIS,但我没有运气.有什么明显的我做错了吗?无论如何要在较小的部分进行故障排除吗?(所以我可以通过消除过程找出问题......?)
不幸的是,Windows/IIS不是我的专业领域 - 我一直负责,因为似乎没有人知道任何事情.
我需要检查远程服务器上是否存在特定文件.使用is_file()和file_exists()不起作用.任何想法如何快速,轻松地做到这一点?
我正在使用它来检查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上,就是这样.
有任何想法吗?
我在Windows上运行PHP 5.2.6,我extension=php_curl.dll和extension=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连接到WebDAV,并能够上传文件等.但是,我无法弄清楚如何连接它.我想它最终会像打开一个套接字并发送正确的头文件/命令一样简单,但我不知道我需要发送什么.我想在没有额外库/类的情况下这样做.
谁能指出我正确的方向?
我正在为Automated Recurring Billing创建一个应用程序.
请让我知道我应该选择将哪个选项发送到服务器
为什么一个比另一个好?
我试图使用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) 这是我正在使用的代码:
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检索电子邮件).
谢谢
我需要使用代理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命令可以帮助在这种情况下,还是有任何解决方案或替代解决方案,以实现这一目标?