Versuche über das importTextfile.php Text-Files in mein mediawiki zu importieren.

Status
Für weitere Antworten geschlossen.

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hallo zusammen...

ich versuche seit einigen Tagen über das importTextfile.php des mediawikis Text files zu importieren. Ich bekomme folgende Fehlermeldung:

Using ./text.txt...DB connection error: MySQL functions missing, have you compiled PHP with the --with-mysql option?

Fehlt mir da was oder kann er sich nicht in die DB connecten? Kann mir da jemand helfen?

Gruss und danke im Voraus für euer Feedback.

cheaf
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
das default PHP von Synology sollte sich problemlos mit mysql verbinden können. Nur zur Sicherheit: Dein mysql läuft auf der DS? Andere Scripte, welche die DB nutzen, arbeiten problemlos?
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Hallo...

Nein, es laufen gar keine Skripte... ich bekomme immer die selbe, oben erwähnte Fehlermeldung. Ja mein mysql ist auf der DS.

Folgende Anhaben habe ich mit phpMyadmin ausgelesen:

Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/1.0.0c PHP/5.3.3
MySQL-Client-Version: 5.1.49
PHP Erweiterung: mysql
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
aber phpMyAdmin an sich funzt? Oder ned? Und der Webserver ist dieselbe Maschine (DS) wie der mysql Server?
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
ja phpMyadmin funzt wunderbar mit dem root user, ohne pw und der webserver ist auf der gleichen maschine wie der mysql server. Also, eigentlich habe ich den webserver auf der DS aktiviert und dann das mediawiki in den web ordner kopiert und konfiguriert.
mediawiki läuft, webserver läuft, aber kann mich mit keinem php skript connecten. fehlt mir was? :) also ich gehe mit dem putty auf die DS mit dem admin user und versuche dort die php skripte zu verwenden.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
hast du denn in diesen Scripten die Verbindungsparameter (User und Passwort) für den mysql Login korrekt angegeben?. Öffne mal dieses php File und such nach mysql_connect Dort sollten User und PW für die DB Verbindung angegeben sein. Stimmen die?
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Das php Skript sieht folgendermassen aus:

<?php

/**
* Maintenance script allows creating or editing pages using
* the contents of a text file
*
* @file
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
*/

$options = array( 'help', 'nooverwrite', 'norc' );
$optionsWithArgs = array( 'title', 'user', 'comment' );
require_once( dirname(__FILE__) . '/commandLine.inc' );
echo( "Import Text File\n\n" );

if( count( $args ) < 1 || isset( $options['help'] ) ) {
showHelp();
} else {

$filename = $args[0];
echo( "Using {$filename}..." );
if( is_file( $filename ) ) {

$title = isset( $options['title'] ) ? $options['title'] : titleFromFilename( $filename );
$title = Title::newFromURL( $title );

if( is_object( $title ) ) {

echo( "\nUsing title '" . $title->getPrefixedText() . "'..." );
if( !$title->exists() || !isset( $options['nooverwrite'] ) ) {

$text = file_get_contents( $filename );
$user = isset( $options['user'] ) ? $options['user'] : 'Maintenance script';
$user = User::newFromName( $user );

if( is_object( $user ) ) {

echo( "\nUsing username '" . $user->getName() . "'..." );
$wgUser =& $user;
$comment = isset( $options['comment'] ) ? $options['comment'] : 'Importing text file';
$flags = 0 | ( isset( $options['norc'] ) ? EDIT_SUPPRESS_RC : 0 );

echo( "\nPerforming edit..." );
$article = new Article( $title );
$article->doEdit( $text, $comment, $flags );
echo( "done.\n" );

} else {
echo( "invalid username.\n" );
}

} else {
echo( "page exists.\n" );
}

} else {
echo( "invalid title.\n" );
}

} else {
echo( "does not exist.\n" );
}

}

function titleFromFilename( $filename ) {
$parts = explode( '/', $filename );
$parts = explode( '.', $parts[ count( $parts ) - 1 ] );
return $parts[0];
}

function showHelp() {
print <<<EOF
USAGE: php importTextFile.php <options> <filename>

<filename> : Path to the file containing page content to import

Options:

--title <title>
Title for the new page; default is to use the filename as a base
--user <user>
User to be associated with the edit
--comment <comment>
Edit summary
--nooverwrite
Don't overwrite existing content
--norc
Don't update recent changes
--help
Show this information

EOF;
}
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
in dem Script sehe ich gerade nichts von mysql. Das scheint mir ausserdem ein Script für die Shell und nicht den Browser zu sein. Rufst du das auf der Kommandozeile direkt auf? Schau dir ggf mal noch die Datei commandLine.inc an ob die eventuell was zu mysql enthält
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
ja ich rufe das skript direkt aus der shell auf.

$ php /volume1/web/mediawiki/maintenance/importTextFile.php ./test.txt

Fehler: Using ./test.txt...DB connection error: MySQL functions missing, have you compiled PHP with the --with-mysql option?

Muss ich mich vorher irgendwie connecten. Wie kann ich das aus dem Browser aus machen?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Prüfe mal welches PHP du verwendest. Gib dazu auf der Konsole mal
Code:
which php
an. Wenn dort nicht als Antwort kommt /usr/bin/php, sondern etwas mit /opt, dann haben wir den Schuldigen wahrscheinlich ;-)
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
DiskStation> which php
/usr/bin/php

Leider nein. Wie weiter?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
und die Datei test.txt befindet sich im selben Verzeichnis wie das PHP Script? Könnte es evenutell sein, dass dieses txt File sich ausserhalb von /volume1/web befindet?
Was du auch noch probieren könntest wäre es das error_reporting voll aufzudrehen. Vielleicht kommt irgendeine Fehlermeldung dazu, die uns weiterhelfen könnte. Trag mal im PHP File direkt nach <?php die folgenden zwei Zeilen ein
PHP:
error_reporting(E_ALL | E_STRICT);
ini_set('display.errors',1);
und ruf das Script nochmals auf. Irgendwelche Meldungen, die neudazugekommen sind?
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
die text files liegen unter volume1/@tmp und das importTextFile.php liegt im web/mediawiki/maintenance, ebenfalls volume1. Habe die Code zeilen eingefügt, Resultat ist leider dasselbe.

komische Sache....

Das ist mein eigentlicher Plan um 100-te von Files zu importieren:


#!/bin/bash
for i in *.txt; do
php /volume1/web/mediawiki/maintenance/importTextFile.php $i;
done

Brauche es dringend, ist die einzige Möglichkeit, um effizient von überall her auf diese Information zuzugreifen....
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
soviel ich weiss darf aber php nur auf /volume1/@tmp/php zugreifen. Wenn also dein txt File direkt in @tmp liegt könnte es an den sogn openbasedir Restriktionen liegen. Schieb die Datei dann man ins Unterverzeichnis php oder gleich nach /volume1/web
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
habe beide verzeichnisse probiert.... immer noch dasselbe problem...
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Kannst du mal im File commandLine.inc gucken was du dort zum Thema mysql finden kannst?
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
wo befindet sich dieses file?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
das musst du wissen ist ja deine Installation ;-)
du kannst mal folgendes versuchen um das File zu finden
Code:
find /volume1/web -name commandLine.inc
obiges sollte dir den Pfad zum File eigentlich ausspucken
 

cheaf

Benutzer
Mitglied seit
02. Mai 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
<?php

/**
* Backwards-compatibility wrapper for old-style maintenance scripts
*/
require( dirname(__FILE__) . '/Maintenance.php' );

if ( !isset( $optionsWithArgs ) ) {
$optionsWithArgs = array();
}

class CommandLineInc extends Maintenance {
public function __construct() {
global $optionsWithArgs;
parent::__construct();
foreach ( $optionsWithArgs as $name ) {
$this->addOption( $name, '', false, true );
}
}

public function getDbType() {
global $wgUseNormalUser;

return ( isset( $wgUseNormalUser ) && $wgUseNormalUser ) ?
Maintenance::DB_STD : Maintenance::DB_ADMIN;
}

/**
* No help, it would just be misleading since it misses custom options
*/
protected function maybeHelp( $force = false ) {
if ( !$force )
return;
parent::maybeHelp( true );
}

public function execute() {
global $args, $options;
$args = $this->mArgs;
$options = $this->mOptions;
}
}

$maintClass = 'CommandLineInc';
require( DO_MAINTENANCE );
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
auch hier nichts von mysql. Es wird aber ein weiteres File eingebunden (Maintenance.php). Bevor du dieses File jetzt auch hier komplett postest, bitte ich dich folgendes zu machen
Code:
cat /pfad/Maintenance.php | grep mysql
den pfad zum Script musst du natürlich so anpassen, dass es bei dir passt. Bitte poste nur die Rückgabe dieses Codes und nicht das ganze File ;-)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat