" HTTP / 1.1 406不可接受"使用" file_get_contents()" - 相同的域名

时间:2017-08-01 18:46:38

标签: php wordpress apache http-headers file-get-contents

我使用file_get_contents()获取一个PHP文件,我将其用作创建PDF的模板。

我需要传递一些POST值,以便填充模板并将生成的HTML恢复为PHP变量。然后将其与mPDF一起使用。

这完全适用于我的服务器(使用PHP 5.6.24的VPS)......
现在,我正在客户端的实时站点上安装经过全面测试的脚本(PHP 5.6.29), 我收到这个错误:

  

PHP警告:file_get_contents(http://www.example.com/wp-content/calculator/pdf_page1.php):无法打开流:HTTP请求失败! HTTP / 1.1 406不可接受

所以我想这可以在php.ini或一些配置文件中修复 我可以问(我想要!!)我的客户联系他的主人解决它...

但是我知道主持人通常不会改变服务器配置...... 我想确切知道要在哪个文件中更改以允许下面的代码工作。

对于我的个人知识......显然 但也要让它看起来容易"为主机(和我的客户!!)有效地改变它。 ;)

我非常确定这只是一个奇怪名称的PHP配置参数...

<?php
$baseAddr = "http://www.example.com/wp-content/calculator/";

// ====================================================
// CLEAR OLD PDFs

$now = date("U");
$delayToKeepPDFs = 60*60*2; // 2 hours in seconds.

if ($handle = opendir('.')) {

    while (false !== ($entry = readdir($handle))) {

      if(substr($entry,-4)==".pdf"){
        $fileTime = filemtime($entry);        // Returns unix timestamp;
        if($fileTime+$delayToKeepPDFs<$now){
          unlink($entry);                     // Delete file
        }
      }
    }
    closedir($handle);
}
// ====================================================



// Random file number
$random = rand(100, 999);

$page1 = $_POST['page1'];   // Here are the values, sent via ajax, to fill the template.
$page2 = $_POST['page2'];

// Instantiate mpdf
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new mPDF( __DIR__ . '/vendor/mpdf/mpdf/tmp');


// GET PDF templates from external PHP
// ==============================================================
// REF: http://stackoverflow.com/a/2445332/2159528
// ==============================================================
$postdata = http_build_query(
  array(
    "page1" => $page1,
    "page2" => $page2
  )
);
$opts = array('http' =>
  array(
    'method'  => 'POST',
    'header'  => 'Content-type: application/x-www-form-urlencoded',
    'content' => $postdata
  )
);
$context  = stream_context_create($opts);
// ==============================================================


$STYLE .=  file_get_contents("smolov.css", false, $context);
$PAGE_1 .=  file_get_contents($baseAddr . "pdf_page1.php", false, $context);
$PAGE_2 .=  file_get_contents($baseAddr . "pdf_page2.php", false, $context);

$mpdf->AddPage('P');
// Write style.
$mpdf->WriteHTML($STYLE,1);

// Write page 1.
$mpdf->WriteHTML($PAGE_1,2);


$mpdf->AddPage('P');
// Write page 1.
$mpdf->WriteHTML($PAGE_2,2);


// Create the pdf on server
$file =  "training-" . $random . ".pdf";

$mpdf->Output(__DIR__ . "/" . $file,"F");

// Send filename to ajax success.
echo $file;
?>

只是为了避免&#34;到目前为止您尝试了什么?&#34; 评论
我在许多组合中搜索了这些关键字,但没有找到需要更改的设置:

  • PHP
  • 的php.ini
  • 请求
  • 内容类型
  • 应用
  • HTTP
  • 的file_get_contents
  • HTTP / 1.1 406不可接受

0 个答案:

没有答案