2013-10-09 3 views
0

Я пытаюсь require_once php-файл в Magento, так что я могу использовать функции внутри файла. Независимо от того, где я поместить файл PHP, или там, где я пытаюсь требовать его, возникает та же ошибка:Magento failed require_once php file

Fatal error: require_once(): Failed opening required 'http://127.0.0.1/ezzence/functions.php' (include_path='C:\wamp\www\ezzence\app\code\local;C:\wamp\www\ezzence\app\code\community;C:\wamp\www\ezzence\app\code\core;C:\wamp\www\ezzence\lib;.;C:\php\pear') in C:\wamp\www\ezzence\app\design\frontend\default\theme317\template\page\html\head.phtml on line 28

Файл PHP содержит только одну функцию, поэтому сам PHP файл не проблема. Это как PHP не могу найти мой php-файл. Я стараюсь, чтобы требовать это так:

<?php require_once($this->getBaseUrl() . 'functions.php');?> 

Первоначально я хотел, что файл находится в skin/theme/default/inc/, но для целей тестирования я перенес ее в корне.

Я проверил, что у меня есть allow_url_fopen = On в моем php.ini, но я не знаю, влияет ли это на метод require_once.

Любые предложения приветствуются. Заранее спасибо :)

ответ

1

вы не можете включить PHP файл через HTTP. Это неправильно:

required once 'http://example.com/some_file.php' 

Я думаю, что это то, что вы ищете:

require_once($this->getBaseDir() . 'functions.php' 

Но это тоже не Magento способ сделать это. Вы должны создать модуль и поместить функцию внутри помощника. После этого вы можете вызвать функцию без необходимости в require_once подобное заявление: Mage::helper('helper_alias_here')->doSomething()

Редактироватьи немного не по теме
Если вы используете Magento надлежащим образом, вам не нужно использовать require заявления, если вы не переписывая класс контроллера.

+0

Спасибо за ваш подробный ответ. Я всегда стараюсь делать это правильно :) Я буду смотреть на него –

+0

Как насчет того, когда вы хотите включить Mage.php? Вы не хотите использовать require_once? –

+0

@ThomasTeilmann Если вам нужно включить mage.php, вам потребуется require_once. Но вам нужно сделать это, только если вы создадите собственные php-файлы. Но вы должны использовать внутренний MVC и создать контроллер и действие для ваших собственных нужд. – Marius

1

функция getBaseUrl для получения URL не PATH

Mage::getBaseDir() 

Эта функция возвращает право Magento путь установки

+0

Допустим, что я хочу php-файл в skin/mytheme/default/inc /, что является оптимальным решением для связывания? –

+0

Mage :: getBaseDir ('skin'). "Mytheme/default/inc/functions.php"; Bu Я думаю, что помощник лучше и подходит для этого –

+0

Спасибо за быстрый ответ, хотя :) –