PHPMailer Contact Form

Issue : Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in php [duplicate]

Actually, I’m working on Core PHP now i’m creating google recaptcha contact us page with mail functionality also, so when i’m applying google recaptcha code showing issue like:

Warning: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0

&response=&remoteip="); if(!strstr($request, "true"))< echo '
Error!There was a problem with the Captcha, you lied to us! you are a robot! or you just didnt click it :)
'; > else < // echo "WORKS"; if(isset($_POST['submit'])) < $message= 'Full Name: '.$_POST['fullname'].'
Subject: '.$_POST['subject'].'
Phone: '.$_POST['phone'].'
Email: '.$_POST['emailid'].'
Comments: '.$_POST['comments'].' '; require "PHPMailer-master/class.phpmailer.php"; //include phpmailer class // Instantiate Class $mail = new PHPMailer(); // Set up SMTP $mail->IsSMTP(); // Sets up a SMTP connection $mail->SMTPAuth = true; // Connection with the SMTP does require authorization $mail->SMTPSecure = "ssl"; // Connect using a TLS connection $mail->Host = "smtp.gmail.com"; //Gmail SMTP server address $mail->Port = 465; //Gmail SMTP port $mail->Encoding = '7bit'; // Authentication $mail->Username = $senderEmail; // Your full Gmail address $mail->Password = $senderPassword; // Your Gmail password // Compose $mail->SetFrom($_POST['emailid'], $_POST['fullname']); $mail->AddReplyTo($_POST['emailid'], $_POST['fullname']); $mail->Subject = "New Contact Form Enquiry"; // Subject (which isn't required) $mail->MsgHTML($message); // Send To $mail->AddAddress($receiverEmail, $receiverName); // Where to send it - Recipient $result = $mail->Send(); // Send! $message = $result ? '
Success!Message Sent Successfully!
' : '
Error!There was a problem delivering the message.
'; unset($mail); > > > ?>

Contact Form






Источник

Как заставить file_get_contents () работать с HTTPS?

Я работаю над настройкой обработки кредитных карт и должен использовать обходной путь для CURL. Следующий код работал нормально, когда я использовал тестовый сервер (который не вызывал URL-адрес SSL), но теперь, когда я тестирую его на рабочем сервере с HTTPS, он не работает с сообщением об ошибке «не удалось открыть поток».

function send($packet, $url) < $ctx = stream_context_create( array( 'http'=>array( 'header'=>"Content-type: application/x-www-form-urlencoded", 'method'=>'POST', 'content'=>$packet ) ) ); return file_get_contents($url, 0, $ctx); > 

Попробуйте использовать следующий скрипт, чтобы узнать, есть ли https-обертка для ваших php-скриптов.

$w = stream_get_wrappers(); echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n"; echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n"; echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n"; echo 'wrappers: ', var_export($w); 

результат должен быть чем-то вроде

openssl: yes http wrapper: yes https wrapper: yes wrappers: array(11)

Чтобы разрешить обертку https:

  • расширение php_openssl должно существовать и включаться
  • allow_url_fopen должен быть установлен on

В файле php.ini вы должны добавить эти строки, если они не существуют:

extension=php_openssl.dll allow_url_fopen = On 

Примечание. Это отключает проверку SSL, что означает, что безопасность, предоставляемая HTTPS, теряется . Используйте этот код только для тестирования / локальной разработки, а не в Интернете или других общедоступных сетях. Если этот код работает, это означает, что сертификат SSL не является надежным или не может быть проверен, и вы должны изучить его как отдельную проблему.

$url= 'https://example.com'; $arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), ); $response = file_get_contents($url, false, stream_context_create($arrContextOptions)); 

Это позволит вам получить контент с URL-адреса, будь то HTTPS

Вероятно, это связано с тем, что ваш целевой сервер не имеет действительного сертификата SSL.

Просто добавьте две строки в файл php.ini.

У меня была такая же ошибка. Установка allow_url_include = On php.ini исправлено это для меня.

HTTPS поддерживается начиная с PHP 4.3.0, если вы скомпилировали поддержку OpenSSL. Кроме того, убедитесь, что целевой сервер имеет действующий сертификат, брандмауэр разрешает исходящие подключения и allow_url_fopen в php.ini установлен в значение true.

В моем случае проблема была связана с WAMP с использованием другого php.ini для CLI, чем Apache, поэтому ваши настройки, сделанные в меню WAMP, не относятся к CLI. Просто измените CLI php.ini, и он работает.

Иногда сервер выбирает не отвечать в зависимости от того, что он видит или не видит в заголовках http-запросов (например, соответствующего пользовательского агента). Если вы можете подключиться к браузеру, возьмите заголовки, которые он отправит, и имитируйте их в контексте потока.

ПРОВЕРИТЬ, ЕСЛИ ИСКАТЬ ИЛИ НЕ

Код в вашем вопросе можно переписать как рабочую версию:

function send($packet=NULL, $url) < // Do whatever you wanted to do with $packet // The below two lines of code will let you know if https url is up or not $command = 'curl -k '.$url; return exec($command, $output, $retValue); > 

Источник

Читайте также:  Php display errors function
Оцените статью