0

我有 1 个用 PHP 实现的文件。我得到的错误是

警告:require_once(): http:// wrapper is disabled in server configuration by allow_url_include=0 in /Applications/MAMP/htdocs/opencart/catalog/view/theme/default/template/payment/bank_transfer.tpl 在第 13 行警告:

问题:

  1. 我知道我需要通过在 php.ini 中允许 allow_url_include=0 来解决这个问题。我正在使用 MAMP,我已经搜索了 MAMP 和 MAMP Pro 中的所有文件夹,但我没有找到任何行,我可以将该值设置为 0。我要添加这一行吗?

  2. 我已经阅读了LINK,我担心使用 require_once、fopen 和绝对 URL 会出现一些安全问题。使用绝对 URL 和 require_once 是否存在任何安全问题?

  3. 如何指定文档的 URL?目前它是www.example.com/opencart/admin/kzm/kzm.utils.php,我尝试使用相对 URL /opencart/admin/kzm/kzm.utils.php,但我没有找到该文件。我做对了吗?

bank_transfer.tpl:

<h2><?php echo $text_instruction; ?></h2>
    <div class="content">
          <p><?php echo $text_description; ?></p>
          <p><?php echo $bank; ?></p>
          <p><?php echo $text_payment; ?></p>
          <p><?php echo $orderIdKZM; ?></p>
          <p>
          <?php 
            echo $amountKZM; 
            $titleKZM = $titleKZM.$orderIdKZM; 
            echo '<br>';

            require_once('http://example.com/opencart/admin/kzm/kzm.utils.php');
            echo $titleKZM;
            echo '<br>';

            $merchantIdKZM = '10';
            $currencyKZM = 'KZT';
            $successUrlKZM = 'http://localhost:8888/opencart/admin/kzm/kzm_pay.php';
            $erroUrlKZM = 'http://www.google.com';

            $dateKZM = " ";
            $signstrKZM = " ";
            $verKZM = " ";
            echo $merchantIdKZM.'-'.$currencyKZM.'-'.$successUrlKZM.'-'.$erroUrlKZM.'-'.$dateKZM;

          ?></p>
    </div>
    <div class="buttons">
      <div class="right">
            <form action="/opencart/testkzm.php" method="get">
                <input type="hidden" name="merchantIdKZM" value="<?php echo $merchantIdKZM; ?>">
                <input type="hidden" name="orderIdKZM" value="<?php echo $orderIdKZM; ?>">
                <input type="hidden" name="amountKZM" value="<?php echo $amountKZM; ?>">
                <input type="hidden" name="currencyKZM" value="<?php echo $currencyKZM; ?>">
                <input type="hidden" name="successUrlKZM" value="<?php echo $successUrlKZM; ?>">
                <input type="hidden" name="errorUrlKZM" value="<?php echo $errorUrlKZM; ?>">
                <input type="hidden" name="signstrKZM" value="<?php echo $signstrKZM; ?>">
                <input type="hidden" name="verKZM"  value="<?php echo $verKZM; ?>">

                <input type="submit" value="<?php echo $button_confirm; ?>" id="button-confirm" class="button" />
            </form>
        </div>
    </div>
4

3 回答 3

2

更改 allow_url_include=1 是不安全的。它默认设置为禁用。

当我在本地机器上包含一些东西时,我总是使用这样的东西,这样它就可以跨平台移植。如果您使用共享托管计划或您不控制服务器,则在 Web 根目录下硬编码包含可能会导致强制重写。这对于开发/生产环境也更便携。

<?php

    require_once($_SERVER['DOCUMENT_ROOT'].'/opencart/admin/kzm/kzm.utils.php');

?>

如果您需要进入另一个目录,您可以随时执行以下操作:

<?php

    require_once($_SERVER['DOCUMENT_ROOT'].'/../website2_folder/opencart/admin/kzm/kzm.utils.php');

?>
于 2013-04-05T18:59:21.527 回答
1

您应该提供相对于文件系统的 require_once() 路径,而不是站点 URL。

例如,您有http://example.com该站点的站点和脚本位于/Applications/MAMP/htdocs/目录中。因此,您应该使用require_once("/Applications/MAMP/htdocs/opencart/admin/kzm/kzm.utils.php");而不是require_once('http://example.com/opencart/admin/kzm/kzm.utils.php');.

在这种情况下不需要修改配置。

于 2013-04-05T18:43:44.073 回答
1

1和2个问题我不知道

3)如果你想要的php代码是你的当前目录,试试这个:

require_once("kzm.utils.php");

如果没有,请使用完整路径示例:

require_once("/var/www/opencart/kzm.utils.php);

于 2013-04-05T18:45:11.347 回答