требовать один раз не удается, но с использованием не запрошенного пути при включении файла из файла вспомогательного класса


У меня есть этот файл вспомогательного класса (доступный в настоящее время):

<?php

require_once dirname(__FILE__).'/securimage/securimage.php';

class Milyuncarros_Mobile_Helper_Captcha extends Mage_Core_Helper_Abstract
{
    public function check($value)
    {
        $securimage = new Securimage();
        return $securimage->check($value);
    }

    public function show($ns)
    {
        $img = new Securimage();
        if ($ns) $img->setNamespace($ns);
        $img->show();  // outputs the image and content headers to the browser
    }
}

Я получаю эту ошибку:

Fatal error: require_once(): Failed opening required '/home/carros/public_html/includes/src/securimage/securimage.php' (include_path='/home/carros/public_html/includes/src:.:/usr/lib/php:/usr/local/lib/php') in /home/carros/public_html/includes/src/Milyuncarros_Mobile_Helper_Captcha.php on line 3

Как вы можете заметить, в пути сбоя нет каталога /app. Но мой вспомогательный класс (и необходимая папка securimage) находится в /app/code/local/Milyuncarros/Mobile/Helper.

Почему он терпит неудачу на таком неправильном пути?

 1
Author: Luis Masuelli, 2014-07-15

2 answers

Это связано с включенной компиляцией. Используйте следующие строки для require_once:

require_once BP.DS.'securimage'.DS.'securimage.php';

BP и DS являются предопределенными константами в Mage.php, BP является базовым путем установки, в то время как DS является разделителем каталогов.

Надеюсь, что это решит проблему, даже если включена компиляция.

 1
Author: MTM, 2014-07-16 15:35:15

Попробуйте Mage::getModuleDir('', 'Your_Extension'); и объедините помощника. Проверьте этот вопрос , чтобы увидеть дополнительные параметры ярлыков папок.

 1
Author: mbalparda, 2017-05-23 12:37:13