WebArea/Compat/PHP/Fr

From TuxFamilyFAQ
Jump to navigationJump to search


PHP chez TuxFamily

Accéder aux logs d'erreurs

Les sysadmins TuxFamily sont super sympas. Mais parfois, ils ne sont simplement pas disponible LÀ MAINTENANT TOUT DE SUITE, c-à-d quand vous avez vraiment mais alors vraiment besoin d'accéder aux logs d'erreurs PHP. Vous pouvez contourner ce problème en configurant PHP pour qu'il logge ses erreurs dans un fichier à vous.

Pour ce faire, copiez le fichier php.ini adéquat dans le même dossier que le point d'entrée de votre application (typiquement index.php) puis ajoutez-y error_log = /chemin/absolu/vers/un/fichier.log. Comme c'est plus facile à dire qu'à faire, (après tout les chemins chez TuxFamily paths peuvent parfois être un peu contre-intuitifs), vous pouvez utiliser le script PHP suivant :

<?php
function nope_the_fuck_out_of_here($message) {
    echo $message . ' Aborting.';
    exit();
}
$ini_file = php_ini_loaded_file();
if (!is_file($ini_file)) nope_the_fuck_out_of_here('Unable to determine php.ini location.');
$base_path = implode(array_slice(explode('/', realpath(getcwd()), 8), 0, 7), '/');
if (!is_dir($base_path)) nope_the_fuck_out_of_here('Non-existing webarea base path.');
$error_dirpath = $base_path . '/php-include';
if (!is_dir($error_dirpath)) nope_the_fuck_out_of_here('No php-include directory.');
$error_filepath = $error_dirpath . '/error.log';
if (!is_file('php.ini')) {
    $copy = copy($ini_file, 'php.ini');
    if (!$copy) nope_the_fuck_out_of_here("Copying ${ini_file} failed.");
} else echo "php.ini already exists, skipping copy.\n<br>";
$config = file_put_contents('php.ini', "error_log = ${error_filepath}\n", FILE_APPEND);
if (!$config) nope_the_fuck_out_of_here("Error while setting error_log.");
echo "Success! Copied ${ini_file} to the current directory and adjusted error_log to log errors into ${error_filepath}.";

Placez-le dans le même dossier que le point d'entrée de votre application (typiquement index.php), nommez-le own-error-log.php ou own-error-log.php7 et exécutez-le via votre navigateur. Vous devriez obtenir un message disant "Success!" ainsi que des détails sur le stockage des erreurs PHP. Une fois votre diagnostic terminé, enlevez le fichier php.ini (ou au moins sa directive error_log) et le fichier php-includes/error.log (sinon vous risquez de remplir le quota assigné à votre projet).