SMF - Coppermine, problema require_once

Aperto da Flavio93Zena, Martedì - 05 Luglio 2016 - 02:15

0 Utenti e 2 Visitatori stanno visualizzando questa discussione.

Flavio93Zena

Seguendo: http://www.simplemachines.org/community/index.php?topic=12936.0
Molto semplicemente ho chiamato nel tema di Coppermine (theme.php) il file come descritto nella procedura e funziona il require, ma mi ritorna una pagina bianca con:

Fatal error: require_once(): Failed opening required '/QueryString.php' (include_path='.:/hsphere/shared/apache/libexec/php5ext/php/') in /hsphere/local/home/sybsite/site.com/board/SSI.php on line 62

Dove alla linea 62 trovo (non modificata, partendo dalla 61) quel che segue:
// Load the important includes.
require_once($sourcedir . '/QueryString.php');
require_once($sourcedir . '/Subs.php');
require_once($sourcedir . '/Errors.php');
require_once($sourcedir . '/Load.php');
require_once($sourcedir . '/Security.php');require_once($sourcedir . '/TPortal.php');


...Perchè? A quanto pare non riconosce $sourcedir, ma come mai? Che posso farci (so che non devo modificare SSI.php)?

La cosa stupida è che devo solo mostrare il menu seguendo i permessi di smf, e dovrebbe bastarmi un ssi_menubar(); ... ... se solo funzionasse il require_once.

emanuele

Metti il require (che poi sarebbe meglio require_once o include) all'inizio del file di coppermine... potrebbe funzionare.

Flavio93Zena

Grazie, ma purtroppo non cambia nulla (stesso errore) :/
<?php
require_once('/hsphere/local/home/sybsite/site.com/board/SSI.php');
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2012 Coppermine Dev Team
  v1.0 originally written by Gregory Demar

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License version 3
  as published by the Free Software Foundation.

**********************************************/

// HTML template for template  sub menu buttons
$template_sys_menu_button $template_sub_menu_button = <<<EOT
<!-- BEGIN {BLOCK_ID} -->
(...)

emanuele

Ed allora copia il blocco di global che c'è all'inizio di SSI prima del require di SSI stesso.
global $boardurl, $sourcedir, $whatever;
require_once('SSI.php');

Flavio93Zena

<?php
global $time_start$maintenance$msubject$mmessage$mbname$language;
global 
$boardurl$boarddir$sourcedir$webmaster_email$cookiename;
global 
$db_server$db_name$db_user$db_prefix$db_persist$db_error_send$db_last_error;
global 
$db_connection$modSettings$context$sc$user_info$topic$board$txt;
global 
$smcFunc$ssi_db_user$scripturl$ssi_db_passwd$db_passwd$cachedir;
require_once(
'/hsphere/local/home/sybsite/sybeaumonde.com/board/SSI.php');
/*************************
  Coppermine Photo Gallery

Non gliene frega nulla, identico errore su QueryString O.o

emanuele

Prova a fare il require di SSI nell'index.php di coppermine.

Flavio93Zena

#6
<?php
require_once('/hsphere/local/home/sybsite/sybeaumonde.com/board/SSI.php');
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2016 Coppermine Dev Team
  v1.0 originally written by Gregory Demar

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License version 3
  as published by the Free Software Foundation.

  ********************************************
  Coppermine version: 1.5.42
  $HeadURL: https://svn.code.sf.net/p/coppermine/code/trunk/cpg1.5.x/index.php $
  $Revision: 8846 $
**********************************************/

/**
* Unless this is true most things wont work - protection against direct execution of inc files
*/
define('IN_COPPERMINE'true);

define('INDEX_PHP'true);
define('RESTRICTED_PRIV'true);

require(
'include/init.inc.php');


Coppermine critical error:
Unable to connect to UDB database !

MySQL said:

E non ho tagliato l'errore, finisce proprio lì O_o Ci sono due tag <strong></strong> messi così, ispezionando la pagina, con nulla all'interno.


Oh wait, messo alla fine di index.php lo include correttamente!!!
Però, appena provo a chiamare ssi_menubar nel theme.php "Fatal error: Call to undefined function ssi_menubar()" :/

Nvm, non lo carica, è solo che non mostra l'errore, ma lo vedo (l'errore) visualizzando il sorgente della pagina.
Sempre si blocca a QueryString (sì, ho messo anche il blocco di global).

emanuele


Flavio93Zena


emanuele

Ohhh... ho scoperto che ne avevo già una copia installata in un anfratto (ed ho anche scoperto che sulla partizione di home ho solo 4 GB liberi!!! :o).
Qua funziona perfettamente ("ovvio" che la funzione non va chiamata in themes.php).

Per scrupolo controllerei che in Settings le directory ci siano e siano corrette.
Come tentativo, proverei ad usare percorsi relativi invece che assoluti (sì, lo so che è un'idiozia, ma al momento non mi viene in mente altro):
require_once('../board/SSI.php');
Un'altra possibilità da considerare, è cambiare la versione di php, magari quella in uso potrebbe essere una con qualche strano bug (e se non ricordo male ve ne è qualcuna).


Unrelated: controllerei perché, puntando a SSI.php il browser si ottiene l'errore Warning: in_array(): Wrong datatype for second argument in /.../board/Sources/Subs.php on line 3952

Flavio93Zena

Proverò con il path relativo...

L'errore di Subs è un altro problema che non capisco, ho fatto una condizione per mostrare un bottone solo se l'utente può amministrare il forum o gruppo id in array 2,10. Non sono al pc (cellulare) ma era qualcosa del tipo (in_array 2, 10($user['group']['ID']).
Il bello è che ho copiato/incollato il codice da una qualche guida ._.

La versione php è 5.2 mi pare... Già, dovrei chiedere di aggiornarla.

emanuele

Come al solito, non posso che suggerire una lettura veloce del manuale di in_array: http://php.net/manual/it/function.in-array.php

Ad ogni modo, sarebbe sempre meglio legare ad un permesso che non ad un gruppo, ma va beh.

Flavio93Zena

#12
Alla fine l'ho legato ad un permesso, lol. (Non ne avevo voglia xD)

Comunque, tornando sul display... Php ora sta a 5.5, ed effettivamente sono riuscito a far venir fuori il menu, solo che 1) viene mostrato senza css, per qualche motivo, e vabbè qui potrei anche metterlo a posto caricandolo a mano da template.html EDIT: no, non lo carica nemmeno da template.html, non carica nessun css per colpa di --> 2) la galleria va in crash con un "Unable to connect to UDB database !"

Ho provato ad includerlo all'inizio di index.php, alla fine (errore QueryString lì), e ora provo pure nel tema... E non va, come avevi detto (QueryString).

emanuele

Quindi ora il menù viene generato, ma manca il CSS.
Corretto?

Strano che mettendolo in template.html non venga usato, ma la domanda che mi sorge è: la riga la riga di HTML si vede nell'output, ma il file è vuoto, oppure proprio nemmeno la riga viene generata?

Flavio93Zena

Il css non è un problema, armeggiando con template.html lo avevo richiamato nell'head e lo caricava solo e soltanto se non cercavo di caricare anche il menu (cioè se eliminavo il require_once il css funzionava sballandomi il design della galleria, avendolo messo di proposito a caricare dopo i css della stessa per controllarne il funzionamento).

Nel template è... Strano. Avevo incluso erroneamente un path errato per il css e mi sono ritrovato gli errori nella console, per cui significa che almeno le righe il server le ha "lette", ma anche dopo aver corretto il percorso... Non gliene è fregato nulla xD Menu costruito con gli stylesheet di default di chrome.

Fondamentalmente il problema non è tanto il css (in qualche modo lo forzo a caricarlo) quanto che se chiamo il menu (ovunque) crasha la galleria o non carica QueryString, senza una ragione apparente.

Discussioni simili (3)