Zum Inhalt springen

php page content extension

Erstellt am 26. April 2006 · 3 Antworten · letzte Antwort am 28. April 2006

Tags: Frage

student2 ·

hallo

habe die php_page_content extension installiert, die es jetzt nicht mehr gibt.

jedenfalls kann man damit als Inhaltsobjekt PHP-Code/Skripte anlegen.
Mein Problem ist nun, wenn ich innerhalb dieses Skripts eine php-Datei includen will, muss ich den absoluten Pfad angeben, der relative (fileadmin/...) funktioniert nicht. bei bildern geht das.
(Das ist schlecht wenn amn das Projekt mal auf nem neuen Server laufen lassen will)
Woran könnte das liegen?

scheinbar ist es nicht gern gesehen, dass man php-Code benutzt. man kann mit dem Dateimanager in typo3 auch keine php-dateien hochladen in den fileadmin.

jedenfalls wollte ich mit diesen php-Dateien Daten in die DB reinschreiben und zwar in eigene Tabellen. das geht auch nicht, auslesen ja, reinschreiben nein. Also in eine neue DB gehts, aber nicht in die, in die auch die typo3 Daten drin sind.

PilsMoench ·

hi,

ich benutze auch die php erweiterung und habe keine probleme damit.

du musst auch nicht zwingend das fileadmin verzeichniss wählen um deine scripte in dein projekt einzubinden.

erstelle z.b. im hauptverzeichniss einen ordner "php" und lade dort deine scripte per ftp hoch.

als angabe zu deinem script reicht z.b:
<?php
include('php/deine_php_datei.php');
?>

das reicht als pfad angabe völlig aus 🙂

des weiteren schreibe ich auch daten in eine eigene tabelle in der eigendlichen typo3 datenbank, eventuell liegt ein syntax- oder verbindungsfehler in deinem script vor.

Gruß Pilsi

student2 ·

ok, vielen dank.

mit hauptverzeichnis meinst du den typo3 Ordner, der wo dann unter anderem auch der fileadmin-Ordner drin ist?

Hab die php-dateien mit einem FTP-Programm im fileadmin drin udn wenn ich diese includen will, kommt eine Fehlermeldung. (Irgendeine Datei aus der extension bringt die) Hab sie jetzt leider nicht da. Mit absolutem Pfad gehts problemlos.

Hab die php-Datei auch mal im upload-Ordner abgelegt, da kam derselbe Fehler.
Naja werds dann nochmal probieren, wenns bei dir geht, werd ich das irgendwie hinbekommen.

student2 ·

also das mit dem includen funktioniert immer noch nicht.

folgende Fehlermeldung erscheitn:
Warning: Unknown: failed to open stream: No such file or directory in /srv/www/htdocs/typo381/typo3conf/ext/page_php_content/pi1/class.tx_pagephpcontent_pi1.php(55) : eval()'d code on line 5

Warning: Unknown: Failed opening 'php/rums.php' for inclusion (include_path='/usr/share/php5') in /srv/www/htdocs/typo381/typo3conf/ext/page_php_content/pi1/class.tx_pagephpcontent_pi1.php(55) : eval()'d code on line 5

(vielleicht muss man einen anderen Pfad wählen, normalerweise wähle ich den pfad relativ zu der datei, die die andere includen soll. nur das php-skript, das die andere includen soll ist ja in der DB abgespeichert als content, daher hab ich keine ahnung, ab welchem verzeichnis ich den pfad angeben muss. Ist jetzt blöd ausgedrückt, hoffe man versteht was ich meine)

hier die class.tx_pagephpcontent_pi1.php, die den fehler erzeugt:
<?php
/***************************************************************
* Copyright notice ....

* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Plugin 'PHP Script' for the 'page_php_content' extension.
*
* @author Gary <gniemcew@yahoo.com>
*/

require_once(PATH_tslib."class.tslib_pibase.php");

class tx_pagephpcontent_pi1 extends tslib_pibase
{
var $prefixId = "tx_pagephpcontent_pi1";
var $scriptRelPath = "pi1/class.tx_pagephpcontent_pi1.php";
var $extKey = "page_php_content";

//
// PHP Script Page Content Type
//
// Adds a "PHP Script" non-cached page content type. You can enter a snippet of PHP code as a part of a page and have
// it executed when building a page without writing an extension or going through tag processing with parseFunc.
// Uses the dreaded PHP eval().
//

function ext_getContentVar($key)
{
return $this->cObj->data[$key];
}
function main($content,$conf)
{
$phpCode = $this->ext_getContentVar("tx_pagephpcontent_php_code");

ob_start();
eval("?" . chr(62) . $phpCode . chr(60) . "?"); EDIT: zeile 55
$content = ob_get_contents();
ob_end_clean();

return $content;
}
}

if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/page_php_content/pi1/class.tx_pagephpcontent_pi1.php"]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/page_php_content/pi1/class.tx_pagephpcontent_pi1.php"]);
}

?>