[PHP] fonction include et require_once

Bonjour à tous

En php, les fonctions include et require_once mettent à leur place la page appelée. ça fonctionne chez moi, et pourtant, j’ai tout de même un message d’erreur.
Je vous file d’abord mes pages php ( remplir.php qui “include” spaw.inc.php, laquelle “require_once” config.php) puis le message d’erreur:

[quote=“remplir.php”]<?php
$nom = “yann”;
include("…/spaw2/spaw.inc.php");
(…)[/quote]

[quote=“spaw.inc.php”]<?php
(…)
echo $nom; —> un test pour voir si ma variable nom est bien “reconnue”, et c’est la ligne 11
require_once(str_replace(’\\’,’/’,dirname(FILE)).’/config/config.php’);
(…)
?>
[/quote]

[quote=“config.php”]<?php
echo $nom;—> un test pour voir si ma variable nom est bien “reconnue”: c’est la ligne 2
(…)
‘dir’ => SpawConfig::getStaticConfigValue(‘SPAW_DIR’).‘uploads/’.$nom.’/’, —> c’est la ligne 251
(…)
?>[/quote]

En fait, tout marche: ma variable fait bien son boulot (elle est reconnue, yann est bien écrit deux fois, et tout ce qui la concerne dans le reset du script se passe comme voulu), mais j’ai ce message qui s’affiche:

[quote=“erreur renvoyée”]Notice: Undefined variable: nom in /public_html/spaw2/spaw.inc.php on line 11

Notice: Undefined variable: nom in /public_html/spaw2/config/config.php on line 2

Notice: Undefined variable: nom in /public_html/spaw2/config/config.php on line 251[/quote]

Pourquoi ?
Et comme tout fonctionne, comment faire disparaître se message ?
Merci d’avance pour votre aide. :smiley:

tu peux désactiver l’affichage des notices dans le fichier /etc/php5/apache2/php.ini. Tu remplaces error_reporting = E_ALL & ~E_NOTICE par error_reporting = E_ALL & ^E_NOTICE

Merci pour l’astuce, mais ce script est effectué sur un serveur sur lequel je n’ai absolument pas accés à /etc/php5/apache2/php.ini.

Salut,

[quote=“yanlolot”]Merci pour l’astuce, mais ce script est effectué sur un serveur sur lequel je n’ai absolument pas accés à /etc/php5/apache2/php.ini.[/quote]C’est pour ce genre de cas qu’il existe la fonction error_reporting() qui évite de modifier le php.ini :wink:

http://fr3.php.net/manual/fr/function.include.php

<?php
@include('./file.php');
?>

ou

<?php
//turn off warnings
error_reporting(E_ALL & ~E_WARNING);
include('./file.php');
// Turn on warnings
error_reporting(E_ALL);
?>

::grillé :smt006

j’ai opté pour error_reporting(E_ALL & ~E_WARNING);et error_reporting(E_ALL & ~E_NOTICE);.C’est parfait. :smiley:
N’empêche que je ne m’explique pas ces erreurs…

Merci :exclamation:

Alors il est fortement déconseillé de mettre l’@ et de désactiver les notices. Cependant en prod on logguera les erreurs plutôt que de les afficher.

Ici ton problème est une initialisation de ta variable qui n’est pas faite au moment où on l’appel avec le peu que tu nous donne on ne peux pas faire grand chose pour savoir pourquoi cette notice apparaît.

Mais je te conseille plutôt que de cacher cette erreur de corriger ton code.

Merci de ton aide, et voilà l’intégralité des fichiers, puis les messages d’erreurs:

[quote=“remplir1.php”]<?php
$login = $_GET[‘login’];
include("…/spaw2/spaw.inc.php");
$spaw1 = new SpawEditor(“spaw1”, “”);
$spaw1->setConfigItem(
‘PG_SPAWFM_SETTINGS’,
array(
‘allow_upload’ => true,
‘allow_modify’ => true,
‘allow_create_subdirectories’ => true,
‘allow_modify_subdirectories’ => true,
‘recursive’ => true,
‘max_upload_filesize’ => 0,
‘allowed_filetypes’ => array(‘any’),
),
SPAW_CFG_TRANSFER_SECURE
);
?>

remplir Nouvelle entrée pour <?php echo [color=#BF0000]$login[/color]; ?>
Date :
<?php $spaw1->show(); ?>
[/quote] Remarque: l'affichage de $login ne pose pas de pb dans cette page ([i]Nouvelle entrée pour <?php echo $_GET['login']; ?> [/i]) [quote="spaw.inc.php"]<?php /** * SPAW Editor v.2 Main include file * * Include this file in your script * * @package spaw2 * @author Alan Mendelevich * @copyright UAB Solmetra */ [color=#4000FF]require_once(str_replace('\\\\','/',dirname(__FILE__)).'/config/config.php');[/color] require_once(str_replace('\\\\','/',dirname(__FILE__)).'/class/editor.class.php');

// load plugin configs
$spaw_pgdir = SpawConfig::getStaticConfigValue(‘SPAW_ROOT’).‘plugins/’;
if (is_dir($spaw_pgdir))
{
if ($spaw_dh = opendir($spaw_pgdir))
{
while (($spaw_pg = readdir($spaw_dh)) != false)
{
if ($spaw_pg != ‘.’ && $spaw_pg != ‘…’)
{
if (is_dir($spaw_pgdir.$spaw_pg.’/config’))
{
if ($spaw_pgdh = opendir($spaw_pgdir.$spaw_pg.’/config’))
{
while (($spaw_fn = readdir($spaw_pgdh)) !== false)
{
if ($spaw_fn != ‘.’ && $spaw_fn != ‘…’ && !is_dir($spaw_pgdir.$spaw_pg.’/config/’.$spaw_fn))
include($spaw_pgdir.$spaw_pg.’/config/’.$spaw_fn);
}
closedir($spaw_pgdh);
}
}
}
}
closedir($spaw_dh);
}
}
?>
[/quote]

[quote=“config.php”]<?php
//error_reporting(E_ALL & ~E_NOTICE);
require_once(str_replace(’\\’,’/’,dirname(FILE)).’/…/class/config.class.php’);
require_once(str_replace(’\\’,’/’,dirname(FILE)).’/…/class/util.class.php’);

// sets physical filesystem directory of web site root
// if calculation fails (usually if web server is not apache) set this manually
SpawConfig::setStaticConfigItem(‘DOCUMENT_ROOT’, str_replace("\","/",SpawVars::getServerVar(“DOCUMENT_ROOT”)));
if (!ereg(’/$’, SpawConfig::getStaticConfigValue(‘DOCUMENT_ROOT’)))
SpawConfig::setStaticConfigItem(‘DOCUMENT_ROOT’, SpawConfig::getStaticConfigValue(‘DOCUMENT_ROOT’).’/’);
// sets physical filesystem directory where spaw files reside
// should work fine most of the time but if it fails set SPAW_ROOT manually by providing correct path
SpawConfig::setStaticConfigItem(‘SPAW_ROOT’, str_replace("\","/",realpath(dirname(FILE)."/…").’/’));
// sets virtual path to the spaw directory on the server
// if calculation fails set this manually
SpawConfig::setStaticConfigItem(‘SPAW_DIR’, ‘’.str_replace(SpawConfig::getStaticConfigValue(“DOCUMENT_ROOT”),’’,SpawConfig::getStaticConfigValue(“SPAW_ROOT”)));

/*
// semi-automatic path calculation
// comment the above settings of DOCUMENT_ROOT, SPAW_ROOT and SPAW_DIR
// and use this block if the above fails.
// set SPAW_DIR manually. If you access demo page by domain.com/spaw2/demo/demo.php
// then set SPAW_DIR to /spaw2/
SpawConfig::setStaticConfigItem(‘SPAW_DIR’, ‘/spaw2/’);
// and the following settings will be calculated automaticly
SpawConfig::setStaticConfigItem(‘SPAW_ROOT’, str_replace("\","/",realpath(dirname(FILE)."/…").’/’));
SpawConfig::setStaticConfigItem(‘DOCUMENT_ROOT’, substr(SpawConfig::getStaticConfigValue(‘SPAW_ROOT’),0,strlen(SpawConfig::getStaticConfigValue(‘SPAW_ROOT’))-strlen(SpawConfig::getStaticConfigValue(‘SPAW_DIR’))));
*/

/*
// under IIS you will probably need to setup the above paths manually. it would be something like this
SpawConfig::setStaticConfigItem(‘DOCUMENT_ROOT’, ‘c:/inetpub/wwwroot/’);
SpawConfig::setStaticConfigItem(‘SPAW_ROOT’, ‘c:/inetpub/wwwroot/spaw2/’);
SpawConfig::setStaticConfigItem(‘SPAW_DIR’, ‘/spaw2/’);
*/

// DEFAULTS used when no value is set from code
// language
SpawConfig::setStaticConfigItem(‘default_lang’,‘en’);
// output charset (empty strings means charset specified in language file)
SpawConfig::setStaticConfigItem(‘default_output_charset’,’’);
// theme
SpawConfig::setStaticConfigItem(‘default_theme’,‘spaw2’);
// toolbarset
SpawConfig::setStaticConfigItem(‘default_toolbarset’,‘standard’);
// stylesheet
SpawConfig::setStaticConfigItem(‘default_stylesheet’,SpawConfig::getStaticConfigValue(‘SPAW_DIR’).‘wysiwyg.css’);
// width
SpawConfig::setStaticConfigItem(‘default_width’,‘100%’);
// height
SpawConfig::setStaticConfigItem(‘default_height’,‘200px’);

// specifies if language subsystem should use iconv functions to convert strings to the specified charset
SpawConfig::setStaticConfigItem(‘USE_ICONV’,true);
// specifies rendering mode to use: “xhtml” - renders using spaw’s engine, “builtin” - renders using browsers engine
SpawConfig::setStaticConfigItem(‘rendering_mode’, ‘xhtml’, SPAW_CFG_TRANSFER_JS);
// specifies that xhtml rendering engine should indent it’s output
SpawConfig::setStaticConfigItem(‘beautify_xhtml_output’, true, SPAW_CFG_TRANSFER_JS);
// specifies host and protocol part (like mydomain.com) that should be added to urls returned from file manager (and probably other places in the future)
SpawConfig::setStaticConfigItem(‘base_href’, ‘’, SPAW_CFG_TRANSFER_JS);
// specifies if spaw should strip domain part from absolute urls (IE makes all links absolute)
SpawConfig::setStaticConfigItem(‘strip_absolute_urls’, true, SPAW_CFG_TRANSFER_JS);
// specifies in which directions resizing is allowed (values: none, horizontal, vertical, both)
SpawConfig::setStaticConfigItem(‘resizing_directions’, ‘vertical’, SPAW_CFG_TRANSFER_JS);
// specifies that special characters should be converted to the respective html entities
SpawConfig::setStaticConfigItem(‘convert_html_entities’, false, SPAW_CFG_TRANSFER_JS);

// data for style (css class) dropdown list
SpawConfig::setStaticConfigItem(“dropdown_data_core_style”,
array(
’’ => ‘Normal’,
‘style1’ => ‘Style No.1’,
‘style2’ => ‘Style No.2’,
)
);
// data for style (css class) dropdown in table properties dialog
SpawConfig::setStaticConfigItem(“table_styles”,
array(
’’ => ‘Normal’,
‘style1’ => ‘Style No.1’,
‘style2’ => ‘Style No.2’,
)
);
// data for style (css class) dropdown in table cell properties dialog
SpawConfig::setStaticConfigItem(“table_cell_styles”,
array(
’’ => ‘Normal’,
‘style1’ => ‘Style No.1’,
‘style2’ => ‘Style No.2’,
)
);
// data for style (css class) dropdown in image properties dialog
SpawConfig::setStaticConfigItem(“image_styles”,
array(
’’ => ‘Normal’,
‘style1’ => ‘Style No.1’,
‘style2’ => ‘Style No.2’,
)
);
// data for fonts dropdown list
SpawConfig::setStaticConfigItem(“dropdown_data_core_fontname”,
array(
’’ => ‘Default’,
‘Arial’ => ‘Arial’,
‘Courier’ => ‘Courier’,
‘Tahoma’ => ‘Tahoma’,
‘Times New Roman’ => ‘Times’,
‘Verdana’ => ‘Verdana’
)
);
// data for fontsize dropdown list
SpawConfig::setStaticConfigItem(“dropdown_data_core_fontsize”,
array(
’’ => ‘Default’,
‘1’ => ‘1’,
‘2’ => ‘2’,
‘3’ => ‘3’,
‘4’ => ‘4’,
‘5’ => ‘5’,
‘6’ => ‘6’
)
);
// data for paragraph dropdown list
SpawConfig::setStaticConfigItem(“dropdown_data_core_formatBlock”,
array(

’ => ‘Normal’,

’ => ‘Heading 1’,

’ => ‘Heading 2’,

’ => ‘Heading 3’,

’ => ‘Heading 4’,

’ => ‘Heading 5’,
’ => ‘Heading 6’,
’ => ‘Preformatted’,
’’ => ‘Address’
)
);
// data for link targets drodown list in hyperlink dialog
SpawConfig::setStaticConfigItem(“a_targets”,
array(
’_self’ => ‘Self’,
’_blank’ => ‘Blank’,
’_top’ => ‘Top’,
’_parent’ => ‘Parent’
)
);
// data for quick links dropdown (new in 2.0.6)
SpawConfig::setStaticConfigItem(“quick_links”,
array(
http://spaweditor.com/’ => ‘SPAW Editor’,
http://forums.solmetra.com/’ => ‘SPAW Support Forums’,
http://blog.solmetra.com/’ => ‘Solmetra’s Developer Blog’
),
SPAW_CFG_TRANSFER_SECURE
);

// toolbar sets (should start with “toolbarset_”
// standard core toolbars
SpawConfig::setStaticConfigItem(‘toolbarset_standard’,
array(
“format” => “format”,
“style” => “style”,
“edit” => “edit”,
“table” => “table”,
“plugins” => “plugins”,
“insert” => “insert”,
“tools” => “tools”
)
);
// all core toolbars
SpawConfig::setStaticConfigItem(‘toolbarset_all’,
array(
“format” => “format”,
“style” => “style”,
“edit” => “edit”,
“table” => “table”,
“plugins” => “plugins”,
“insert” => “insert”,
“tools” => “tools”,
“font” => “font”
)
);
// mini core toolbars
SpawConfig::setStaticConfigItem(‘toolbarset_mini’,
array(
“format” => “format_mini”,
“edit” => “edit”,
“tools” => “tools”
)
);

// colorpicker config
SpawConfig::setStaticConfigItem(‘colorpicker_predefined_colors’,
array(
‘black’,
‘silver’,
‘gray’,
‘white’,
‘maroon’,
‘red’,
‘purple’,
‘fuchsia’,
‘green’,
‘lime’,
‘olive’,
‘yellow’,
‘navy’,
‘blue’,
’#fedcba’,
‘aqua’
),
SPAW_CFG_TRANSFER_SECURE
);

// SpawFm plugin config:

// global filemanager settings
SpawConfig::setStaticConfigItem(
‘PG_SPAWFM_SETTINGS’,
array(
‘allowed_filetypes’ => array(‘any’), // allowed filetypes groups/extensions
’allow_modify’ => false, // allow edit filenames/delete files in directory
’allow_upload’ => false, // allow uploading new files in directory
//‘chmod_to’ => 0777, // change the permissions of an uploaded file if allowed
// (see PHP chmod() function description for details), or comment out to leave default
’max_upload_filesize’ => 0, // max upload file size allowed in bytes, or 0 to ignore
’max_img_width’ => 0, // max uploaded image width allowed, or 0 to ignore
’max_img_height’ => 0, // max uploaded image height allowed, or 0 to ignore
’recursive’ => false, // allow using subdirectories
’allow_modify_subdirectories’ => false, // allow renaming/deleting subdirectories
’allow_create_subdirectories’ => false, // allow creating subdirectories
’forbid_extensions’ => array(‘php’), // disallow uploading files with specified extensions
’forbid_extensions_strict’ => true, // disallow specified extensions in the middle of the filename
),
SPAW_CFG_TRANSFER_SECURE
);

// directories
SpawConfig::setStaticConfigItem(
‘PG_SPAWFM_DIRECTORIES’,
array(
array(
‘dir’ => SpawConfig::getStaticConfigValue(‘SPAW_DIR’).“uploads/$login/” , <–la ligne 243 : c’est là que ça bug
//‘fsdir’ => SpawConfig::getStaticConfigValue(‘SPAW_ROOT’).‘uploads/yann/’, // optional absolute physical filesystem path
’caption’ => ‘sujets’,
‘params’ => array(‘default_dir’ => true,
‘allowed_filetypes’ => array(‘any’)
)
),
),
SPAW_CFG_TRANSFER_SECURE
);
?>[/quote]
Et l’erreur:

la ligne 243 est en rouge dans config.php.

En espèrant que ça puisse vous aider à m’aider :smiley:

Dans remplir1.php tu initialise ta variable login avec cette commande

1 -> les données provenant de $_GET ne sont pas du tout sur il faut vérifier que ce qu’on te donne corresponde bien à ce que tu veux.

2 -> si il ne t’ai rien passé dans l’url alors $login ne vaut rien et ça va planter après donc si $_GET[‘login’] est vide tu lui affecte un valeur par défaut afin que ta variable soit toujours initialisée.

@1 :Mais dans remplir1.php, il y la ligne <center> Nouvelle entrée pour <?php echo $login; ?></center><br> qui affiche correctement la valeur de $login (et la valeur voulue de $login: celle provenant de $_GET).
Et même enfaisant le test de mettre $login = yann; dans remplir1.php, j’ai tjs la même erreur.
@2: Même en faisant au prealable un test avec isset: if( ! isset( $login ) ) $login = yann; , et en initialisant la variable, tjs la même erreur.

Et comme je le fasait remarque dans mon premier post, si je rajoute un echo $login; au début de config.php, il écrit bien la valeur voulue de $login, mais m’envoie pourtant ce message d’erreur.

Ca ne pourrait pas être un pb de visibilité de ta variable ça ? as-tu essayé de préfixer “nom” dans ton fichier inclus par “global” ? cela fonctionne-t-il mieux ? ce n’est pas forcément la méthode à adopter mais cela pourrait peut être donner un indice à d’autres.

En fait, c’était pour configurer le file manager de spaw (éditeur html en ligne). J’essayais de passer en paramètre le dossier de chaque utilisateur au fichier config.php de spaw, alors qu’il existe une méthode pour personnaliser le FM , donnée dans la doc (et qui marche très bien).
Donc, pb résolu. (Mais je me demande si le pb que je rencontrais dans ce fil n’était pas lié à celui de l’autre fil)