Anzeige

PHP-Schnittstelle

PHP-Schnittstelle | PSD-Tutorials.de

Erstellt von Crackp0t, 10.06.2009.

  1. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    PHP-Schnittstelle
    Ich arbeite zur Zeit an meiner ersten PHP-Homepage und stehe nun vor folgendem Problem:
    Ich binde meine Inhalte mit dem Include() Befehl ein, will jetzt aber eine externe PHP Applikation einbinden die relativ komplex ist. Mir wurde gesagt, dass ich dafür eine Schnittstelle schaffen muss, habe jedoch keine Ahnung wie ich das angehen muss. Kann mir jemand auf die sprünge helfen?

    Oder aber, gäbe es auch eine Alternative, außer Frames?
     
    #1      
  2. r3nt5ch3r

    r3nt5ch3r ~ Allround pG ~

    Dabei seit:
    10.03.2006
    Beiträge:
    1.836
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Geht es um eine wirkliche Einbindung einer externen PHP-Datei oder nur um bspw einer XML-Strukur die als Schnittstelle dient?
     
    #2      
  3. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Es geht um eine, komplett in PHP geschriebene, Aplikation die als Controlpannel für eine SQL-Datenbank dient.
     
    #3      
  4. r3nt5ch3r

    r3nt5ch3r ~ Allround pG ~

    Dabei seit:
    10.03.2006
    Beiträge:
    1.836
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Puh, ich kenn mich damit zwar nicht aus, aber so wie ich das jetzt gelesen hab (HIER) kannst du dafür einfach ein include() verwenden.

     
    #4      
  5. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Ergebnis:

    Code (Text):
    1. Warning: require_once(cp.php) [function.require-once]: failed to open stream
     
    #5      
  6. EnricoS

    EnricoS Nicht mehr ganz neu hier

    Dabei seit:
    13.11.2008
    Beiträge:
    161
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Datei vorhanden? Genügenden Berechtigungen? Wo läuft der Spaß (lokal, extern, Windows, Linux, Apache, ...) ?

    Gruß
    Enrico
     
    #6      
  7. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Ich teste die Homepage auf meinem Homeserver, Windows XP mit Apache.
    Berechtigungen habe ich uneingeschränkt, da der Webserver von außen nicht zugänglich ist.
    Wenn ich das Controlpannel normal aufrufe, ohne es einzubinden, funktioniert es komplett und einwandfrei.
     
    #7      
  8. Rakete

    Rakete Nicht mehr ganz neu hier

    Dabei seit:
    05.04.2007
    Beiträge:
    66
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Seit wann gibt denn ein gescheitertes include() eine Fehlermeldung zurück, die sich auf require_once() bezieht???

    Kannst du mal den Teil deines Code zeigen, der die Fehlermeldung auslöst?


    Wo liegt das Controlpanel? Bei PHP für Windows Versionen < 4.3.0 kann man keine entfernten Dateien includen.
     
    Zuletzt bearbeitet: 11.06.2009
    #8      
  9. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Also hier mal ein paar mehr Details:

    Dies ist ein Ausschnitt aus meiner index.php

    Code (Text):
    1. <div id="toolbar">
    2. <center>
    3.             <a href="index.php?page=main" class="navigation">News</a>
    4.             <a href="index.php?page=Forum" class="navigation">Forum</a>
    5.             <a href="index.php?page=download" class="navigation">Downloads</a>
    6.             <a href="index.php?page=cp" class="navigation">Controlpannel</a>
    7.             <a href="index.php?page=kontakt" class="navigation">Kontakt</a>
    8. </center>
    9. </div>
    10.         <div id="content">
    11.         <?
    12.             switch ($_GET['page']) {
    13.                 case "main": include 'news.php'; break;
    14.                 case "forum": include 'forum.php'; break;
    15.                 case "download": include 'down.php'; break;
    16.                 case "cp": include 'flux/index.php'; break;
    17.                 case "kontakt": include 'kontakt.php'; break;
    18.  
    19.  
    20.                 default: include 'news.php'; break;
    21.             }
    22.         ?>
    23.         </div>
    Bei dem Controlpannel handelt es sich um das Flux Controlpannel, welches als Interface für die Datenbank des Ragnarok Online Serveremulators eAthena geschrieben wurde. Den kompletten Src findet man hier: fluxcp - Revision 935: /branches/fluxcp-1.0

    Der Ausschnitt der Datei welcher den Fehler verursacht:

    Code (Text):
    1. // Some necessary Flux core libraries.
    2. require_once 'Flux.php';
    3.  
     
    #9      
  10. EnricoS

    EnricoS Nicht mehr ganz neu hier

    Dabei seit:
    13.11.2008
    Beiträge:
    161
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Heißt wenn du die Seite direkt aufrufst localhost/flux/index.php geht es aber über dein include nicht?
     
    #10      
  11. Rakete

    Rakete Nicht mehr ganz neu hier

    Dabei seit:
    05.04.2007
    Beiträge:
    66
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Kann ich mir kaum vorstellen.

    Jedenfalls scheint bei dir lokal (oder per include oder wie auch immer) etwas beim setzen des Include Pfades schief zu gehen (Zeile 40, index.php) oder es ist einfach ein Programmfehler.

    Jedenfalls wird die Flux.php nicht gefunden. Sie befindet sich im Ordner Flux und nicht auf der selben Ebene wie die index.php und nicht im voreingestellten include Ordner.

    Du kannst ja mal ausprobieren was passiert, wenn du Zeile 47 in der index.php von Flux änderst in:

    require_once 'Flux/Flux.php';

    Das ist nicht sehr elegant und ich garantiere nicht, dass es danach funktioniert, aber so sollte zumindest die Datei Flux.php gefunden werden.
     
    #11      
  12. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Exakt.

    Der Vorschlag von Rakete funktioniert nicht.

    Aber ihr scheint was überlesen zu haben:
    Mir wurde gesagt, dass ich dafür eine Schnittstelle schaffen muss, soweit ich das verstanden hab also ein Script welches dafür sorgt, dass die Daten richtig übertragen und gehandhabt werden. Jedoch habe ich keine Vorstellung davon, wie dies funktionieren soll.

    Mein 2. Anliegen war, ob es nicht noch eine andere Möglichkeit ausser iframes gibt das Controlpannel in den Content-Div einzubinden.
     
    #12      
  13. r3nt5ch3r

    r3nt5ch3r ~ Allround pG ~

    Dabei seit:
    10.03.2006
    Beiträge:
    1.836
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Ich vermute es liegt an falschen relativen Pfadangaben. Wenn du den betroffenen Code postest kann ich dir bestimmt weiter helfen...
     
    #13      
  14. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Code (Text):
    1. <?php
    2. if (version_compare(PHP_VERSION, '5.2.1', '<')) {
    3.     echo '<h2>Error</h2>';
    4.     echo '<p>PHP 5.2.1 or higher is required to use Flux Control Panel.</p>';
    5.     echo '<p>You are running '.PHP_VERSION.'</p>';
    6.     exit;
    7. }
    8.  
    9. // Disable Zend Engine 1 compatibility mode.
    10. // See: http://www.php.net/manual/en/ini.core.php#ini.zend.ze1-compatibility-mode
    11. ini_set('zend.ze1_compatibility_mode', 0);
    12.  
    13. // Time started.
    14. define('__START__', microtime(true));
    15.  
    16. error_reporting(E_ALL);
    17. ini_set('display_errors', 1);
    18.  
    19. define('FLUX_ROOT',       str_replace('\\', '/', dirname(__FILE__)));
    20. define('FLUX_DATA_DIR',   'data');
    21. define('FLUX_CONFIG_DIR', 'config');
    22. define('FLUX_LIB_DIR',    'lib');
    23. define('FLUX_MODULE_DIR', 'modules');
    24. define('FLUX_THEME_DIR',  'themes');
    25. define('FLUX_ADDON_DIR',  'addons');
    26. define('FLUX_LANG_DIR',   'lang');
    27.  
    28. // Clean GPC arrays in the event magic_quotes_gpc is enabled.
    29. if (ini_get('magic_quotes_gpc')) {
    30.     $gpc = array(&$_GET, &$_POST, &$_REQUEST, &$_COOKIE);
    31.     foreach ($gpc as &$arr) {
    32.         foreach ($arr as $key => $value) {
    33.             if (is_string($value)) {
    34.                 $arr[$key] = stripslashes($value);
    35.             }
    36.         }
    37.     }
    38. }
    39.  
    40. set_include_path(FLUX_LIB_DIR.PATH_SEPARATOR.get_include_path());
    41. //ini_set('session.save_path', 'data/sessions');
    42.  
    43. // Default account levels.
    44. require_once FLUX_CONFIG_DIR.'/levels.php';
    45.  
    46. // Some necessary Flux core libraries.
    47. require_once 'Flux.php';
    48. require_once 'Flux/Dispatcher.php';
    49. require_once 'Flux/SessionData.php';
    50. require_once 'Flux/DataObject.php';
    51. require_once 'Flux/Authorization.php';
    52. require_once 'Flux/Installer.php';
    53. require_once 'Flux/PermissionError.php';
    54.  
    55. // Vendor libraries.
    56. require_once 'markdown/markdown.php';
    57.  
    58. try {
    59.     if (!extension_loaded('pdo')) {
    60.         throw new Flux_Error('The PDO extension is required to use Flux, please make sure it is installed along with the PDO_MYSQL driver.');
    61.     }
    62.     elseif (!extension_loaded('pdo_mysql')) {
    63.         throw new Flux_Error('The PDO_MYSQL driver for the PDO extension must be installed to use Flux.  Please consult the PHP manual for installation instructions.');
    64.     }
    65.    
    66.     // Initialize Flux.
    67.     Flux::initialize(array(
    68.         'appConfigFile'      => FLUX_CONFIG_DIR.'/application.php',
    69.         'serversConfigFile'  => FLUX_CONFIG_DIR.'/servers.php',
    70.         //'messagesConfigFile' => FLUX_CONFIG_DIR.'/messages.php' // No longer needed (Deprecated)
    71.     ));
    72.    
    73.     // Set time limit.
    74.     set_time_limit((int)Flux::config('ScriptTimeLimit'));
    75.    
    76.     // Set default timezone for entire app.
    77.     $timezone = Flux::config('DateDefaultTimezone');
    78.     if ($timezone && !@date_default_timezone_set($timezone)) {
    79.         throw new Flux_Error("'$timezone' is not a valid timezone.  Consult http://php.net/timezones for a list of valid timezones.");
    80.     }
    81.    
    82.     // Create some basic directories.
    83.     $directories = array(
    84.         FLUX_DATA_DIR.'/logs/schemas',
    85.         FLUX_DATA_DIR.'/logs/schemas/logindb',
    86.         FLUX_DATA_DIR.'/logs/schemas/charmapdb',
    87.         FLUX_DATA_DIR.'/logs/transactions',
    88.         FLUX_DATA_DIR.'/logs/mail',
    89.         FLUX_DATA_DIR.'/logs/mysql',
    90.         FLUX_DATA_DIR.'/logs/mysql/errors',
    91.         FLUX_DATA_DIR.'/logs/errors',
    92.         FLUX_DATA_DIR.'/logs/errors/exceptions',
    93.         FLUX_DATA_DIR.'/logs/errors/mail',
    94.     );
    95.  
    96.     // Schema log directories.
    97.     foreach (Flux::$loginAthenaGroupRegistry as $serverName => $loginAthenaGroup) {
    98.         $directories[] = FLUX_DATA_DIR."/logs/schemas/logindb/$serverName";
    99.         $directories[] = FLUX_DATA_DIR."/logs/schemas/charmapdb/$serverName";
    100.    
    101.         foreach ($loginAthenaGroup->athenaServers as $athenaServer) {
    102.             $directories[] = FLUX_DATA_DIR."/logs/schemas/charmapdb/$serverName/{$athenaServer->serverName}";
    103.         }
    104.     }
    105.  
    106.     foreach ($directories as $directory) {
    107.         if (is_writable(dirname($directory)) && !is_dir($directory)) {
    108.             mkdir($directory, 0777);
    109.         }
    110.     }
    111.    
    112.     // Installer library.
    113.     $installer = Flux_Installer::getInstance();
    114.     if ($hasUpdates=$installer->updateNeeded()) {
    115.         Flux::config('ThemeName', 'installer');
    116.     }
    117.    
    118.     $sessionKey = Flux::config('SessionKey');
    119.     session_save_path($dir=realpath(FLUX_DATA_DIR.'/sessions'));
    120.     if (!is_writable($dir)) {
    121.         throw new Flux_PermissionError("The session storage directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
    122.     }
    123.     elseif (!is_writable($dir=realpath(FLUX_DATA_DIR.'/logs'))) {
    124.         throw new Flux_PermissionError("The log storage directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
    125.     }
    126.     elseif (!is_writable($dir=realpath(FLUX_DATA_DIR.'/itemshop'))) {
    127.         throw new Flux_PermissionError("The item shop image directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
    128.     }
    129.     elseif (!is_writable($dir=realpath(FLUX_DATA_DIR.'/tmp'))) {
    130.         throw new Flux_PermissionError("The temporary directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
    131.     }
    132.     elseif (ini_get('session.use_trans_sid')) {
    133.         throw new Flux_Error("The 'session.use_trans_sid' php.ini configuration must be turned off for Flux to work.");
    134.     }
    135.     else {
    136.         $sessionExpireDuration = Flux::config('SessionCookieExpire') * 60 * 60;
    137.         session_set_cookie_params($sessionExpireDuration, Flux::config('BaseURI'));
    138.         ini_set('session.name', $sessionKey);
    139.         session_start();
    140.     }
    141.    
    142.     if (empty($_SESSION[$sessionKey]) || !is_array($_SESSION[$sessionKey])) {
    143.         $_SESSION[$sessionKey] = array();
    144.     }
    145.    
    146.     // Initialize session data.
    147.     Flux::$sessionData = new Flux_SessionData($_SESSION[$sessionKey], $hasUpdates);
    148.    
    149.     // Initialize authorization component.
    150.     $accessConfig = Flux::parseConfigFile(FLUX_CONFIG_DIR.'/access.php');
    151.        
    152.     // Merge with add-on configs.
    153.     foreach (Flux::$addons as $addon) {
    154.         $accessConfig->merge($addon->accessConfig);
    155.     }
    156.    
    157.     $accessConfig->set('unauthorized.index', AccountLevel::ANYONE);
    158.     $authComponent = Flux_Authorization::getInstance($accessConfig, Flux::$sessionData);
    159.    
    160.     if (!Flux::config('DebugMode')) {
    161.         ini_set('display_errors', 0);
    162.     }
    163.  
    164.     // Dispatch requests->modules->actions->views.
    165.     $dispatcher = Flux_Dispatcher::getInstance();
    166.     $dispatcher->setDefaultModule(Flux::config('DefaultModule'));
    167.     $dispatcher->dispatch(array(
    168.         'basePath'                  => Flux::config('BaseURI'),
    169.         'useCleanUrls'              => Flux::config('UseCleanUrls'),
    170.         'modulePath'                => FLUX_MODULE_DIR,
    171.         'themePath'                 => FLUX_THEME_DIR.'/'.Flux::config('ThemeName'),
    172.         'missingActionModuleAction' => Flux::config('DebugMode') ? array('errors', 'missing_action') : array('main', 'page_not_found'),
    173.         'missingViewModuleAction'   => Flux::config('DebugMode') ? array('errors', 'missing_view')   : array('main', 'page_not_found')
    174.     ));
    175. }
    176. catch (Exception $e) {
    177.     $exceptionDir = FLUX_DATA_DIR.'/logs/errors/exceptions';
    178.     if (is_writable($exceptionDir)) {
    179.         require_once 'Flux/LogFile.php';
    180.         $today = date('Ymd');
    181.         $eLog  = new Flux_LogFile("$exceptionDir/$today.log");
    182.        
    183.         // Log exception.
    184.         $eLog->puts('(%s) Exception %s: %s', get_class($e), get_class($e), $e->getMessage());
    185.         foreach (explode("\n", $e->getTraceAsString()) as $traceLine) {
    186.             $eLog->puts('(%s) **TRACE** %s', get_class($e), $traceLine);
    187.         }
    188.     }
    189.    
    190.     require_once FLUX_CONFIG_DIR.'/error.php';
    191.     define('__ERROR__', 1);
    192.     include $errorFile;
    193. }
    194. ?>
    Das ist die index.php der Anwendung die eingebunden werden soll.
     
    #14      
  15. r3nt5ch3r

    r3nt5ch3r ~ Allround pG ~

    Dabei seit:
    10.03.2006
    Beiträge:
    1.836
    Geschlecht:
    männlich
    PHP-Schnittstelle
    AW: PHP-Schnittstelle

    Vermutlich stimmt dieser Pfad dann nicht wenn du das von wo anders einbindest...
     
    #15      
x
×
×