忽略session_start()和getallheaders()错误Opencart

时间:2018-07-18 00:02:39

标签: php json rest opencart fpm

我在Opencart 1.5.2.1上运行RestAPI,服务器在Apache上运行PHP版本7.1.19和服务器API FPM / FastCGI。我遇到了会话问题,我安装了VQMOD xml文件,用于向Opencart的系统会话添加某些功能。

请先让我分享整个会话代码:

  <file name="system/library/session.php">
   <operation>
      <search  position="before"><![CDATA[
          if (!session_id()) {
      ]]></search>
      <add><![CDATA[
          $token_array = json_decode(file_get_contents("php://input"),true);

          if (isset($token_array['ic_token'])) {
          $ic_token = $token_array['ic_token'];
          } elseif(isset($_POST['ic_token'])){
          $ic_token = $_POST['ic_token'];
          }

          if (isset(getallheaders()['ic_token'])) {
          $ic_token = getallheaders()['ic_token'];
          } elseif (isset(getallheaders()['Ic-Token'])) {
          $ic_token = getallheaders()['Ic-Token'];
          }

          if (isset($ic_token) && $ic_token != 'Session_Not_Loggin') {
          session_id($ic_token);
          session_start();
          }
      ]]></add>
    </operation>
</file>

使用Postman调用函数时,我首先收到错误消息

  

致命错误:未捕获错误:调用未定义函数   getallheaders()在   /var/www/vhosts/example.com/httpdocs/vqmod/vqcache/vq2-system_library_session.php:15   堆栈跟踪:#0   /var/www/vhosts/example.com/httpdocs/admin/index.php(110):   会话-> __ construct()#1 {main}被抛出   /var/www/vhosts/example.com/httpdocs/vqmod/vqcache/vq2-system_library_session.php   在第15行

我在Google上搜索后发现PHP-FPM不支持getallheaders(),我尝试了一种变通方法,但没有成功。我已经从xml代码中删除了代码,变得像这样:

      <file name="system/library/session.php">
       <operation>
          <search  position="before"><![CDATA[
              if (!session_id()) {
          ]]></search>
          <add><![CDATA[
              $token_array = json_decode(file_get_contents("php://input"),true);

              if (isset($token_array['ic_token'])) {
              $ic_token = $token_array['ic_token'];
              } elseif(isset($_POST['ic_token'])){
              $ic_token = $_POST['ic_token'];
              }

==> the getallheaders() code has been removed



              if (isset($ic_token) && $ic_token != 'Session_Not_Loggin') {
              session_id($ic_token);
              session_start();
              }
          ]]></add>
        </operation>
    </file>

这导致了一个新错误:

  

注意:会话已经开始-忽略session_start()   在   /var/www/vhosts/example.com/httpdocs/vqmod/vqcache/vq2-system_library_session.php   在第19行

请不要尝试这种解决方法

          if (!function_exists('getallheaders'))
          {
            function getallheaders()
            {
              if (isset(getallheaders()['ic_token'])) {
              $ic_token = getallheaders()['ic_token'];
              } elseif (isset(getallheaders()['Ic-Token'])) {
              $ic_token = getallheaders()['Ic-Token'];
              };
            };
           };

这使我无法获得503服务“意外的<<”

请提供任何帮助,高度赞赏。

0 个答案:

没有答案