2016-11-16 1 views
0

root verwende ich AcyMailing API-Skript, was sehr gut funktioniert, aber unter Joomla root nur - wie http://example.com/api.phpWie JPATH_BASE korrigieren PHP-Skript aus einem Verzeichnis läuft nicht

Aber wenn ich die gleichen Stellen Skript mein eigenes Verzeichnis unter gleiche Joomla, lassen Sie uns /scripts/api.php sagen - ich den Apache-Fehler haben für Zeile 12

PHP Fatal error: require_once(): Failed opening required '/var/www/html/joomla/scripts/includes/defines.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/joomla/scripts/api.php on line 12 

Das verwirrende Teil des Codes ist

define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 

if (file_exists(dirname(__FILE__) . '/defines.php')) { 
include_once dirname(__FILE__) . '/defines.php'; 
} 

if (!defined('_JDEFINES')) { 
define('JPATH_BASE', dirname(__FILE__)); 
require_once JPATH_BASE.'/includes/defines.php'; 
} 

wo Linie 1 2 ist

require_once JPATH_BASE.'/includes/defines.php'; 

Wie der Pfad beheben nicht nur von Joomla root zu ermöglichen api.php laufen, aber von /scripts/api.php?

Vielen Dank im Voraus für irgendwelche Ideen zu versuchen.

EDITED - hier ist voll Skript mit JPATH_SITE wie empfohlen - aber wieder ein Fehler

PHP Fatal error: require_once(): Failed opening required 'JPATH_SITE/includes/defines.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/joomla/scripts/singlemail.php on line 12 

Kann sein, etwas weiter unten in voller Skript verpasst wird?

<?php 

define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 

if (file_exists(dirname(__FILE__) . '/defines.php')) { 
include_once dirname(__FILE__) . '/defines.php'; 
} 

if (!defined('_JDEFINES')) { 
define('JPATH_BASE', dirname(__FILE__)); 
require_once JPATH_SITE.'/includes/defines.php'; 
} 

require_once JPATH_SITE.'/includes/framework.php'; 
$app = JFactory::getApplication('site'); 


if(!include_once(rtrim(JPATH_ADMINISTRATOR,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php')){ 
echo 'This code can not work without the AcyMailing Component'; 
return false; 
} 
$mailer = acymailing_get('helper.mailer'); 
$mailer->report = true; 
$mailer->trackEmail = true; 
$mailer->autoAddUser = false; 
$mailer->sendOne(11,'[email protected]'); 

?> 

Antwort

0

Verwenden JPATH_SITE

ZB: http://example.com/mysite/api.php

hier mysite ist Unterordner hier Sie installieren joomla, dass die Zeit JPATH_BASE ein Problem haben.

ZB: 1. http://example.com/mysite/api.php 2. http://example.com/api.php

folgenden Pfad wird alle Platz arbeiten, weil JPATH_SITE wird joomla Ordner installieren finden.

require_once JPATH_SITE. "/ Includes/defines.php";

+0

Hallo, deine Idee scheint zu stimmen, aber ich habe wieder einen Apache-Fehler. Ich habe diesen Fehler und das vollständige Skript oben veröffentlicht - bitte, schau dir das an, vielleicht ist etwas anderes in einem Code verpasst, um JPATH_SITE zu lesen? – Serge

Verwandte Themen