source: spip-zone/_plugins_/spipmotion/inc/spipmotion_verifier_binaires.php @ 43808

Last change on this file since 43808 was 43808, checked in by kent1@…, 9 years ago

tester la présence de mediainfo
tester la présence de ffmpeg via spipmotion.sh (on ne l'utilise pas directement)

File size: 4.7 KB
Line 
1<?php
2/**
3 * SPIPmotion
4 * Gestion de l'encodage et des métadonnées de vidéos directement dans SPIP
5 *
6 * Auteurs :
7 * Quentin Drouet (kent1)
8 * 2008-2010 - Distribué sous licence GNU/GPL
9 *
10 */
11
12/**
13 * Fonction de vérification que les binaires utilisés soient correctement installés
14 * et exécutables
15 *
16 * -* ffmpeg
17 * -* ffmpeg2theora
18 * -* flvtool2
19 * -* qt-faststart
20 * -* le script spipmotion.sh
21 * -* la class ffmpeg-php
22 * -* mediainfo
23 *
24 * Si le safe_mode est activé, on l'inscrit dans les metas ainsi que son exec_dir
25 * afin de retrouver le script spipmotion.sh qui doit s'y trouver
26 *
27 * Note : Les codes de retour normaux d'une application sont :
28 * -* 0 en cas de réussite
29 * -* 1 en cas d'échec (l'application est là mais retourne une erreur)
30 * -* 127 en cas d'absence de l'application
31 *
32 * @param unknown_type $valeurs
33 * @param boolean $notif : On notifie ou pas?
34 */
35function inc_spipmotion_verifier_binaires_dist($valeurs='',$notif=false){
36        spip_log('SPIPmotion : Vérification des binaires','spipmotion');
37        $erreurs = array();
38       
39        /**
40         * On vérifie que safe_mode soit activé ou pas
41         */
42        $safe_mode = @ini_get('safe_mode');
43        if($safe_mode == 1){
44                ecrire_config('spipmotion_safe_mode', 'oui');
45                $safe_mode_path = @ini_get('safe_mode_exec_dir');
46                ecrire_config('spipmotion_safe_mode_exec_dir', $safe_mode_path);
47        }else{
48                effacer_config('spipmotion_safe_mode');
49                effacer_config('spipmotion_safe_mode_exec_dir');
50        }
51       
52        if(!$valeurs)
53                $valeurs = lire_config('spipmotion');
54
55        /**
56         * Tester ffmpeg2theora
57         */
58        exec('ffmpeg2theora',$retour_ffmpeg2theora,$retour_ffmpeg2theora_int);
59        if($retour_ffmpeg2theora_int != 0){
60                ecrire_config('spipmotion_ffmpeg2theora_casse', 'oui');
61                $erreurs[] = 'ffmpeg2theora';
62        }else{
63                effacer_config('spipmotion_ffmpeg2theora_casse');
64        }
65
66        /**
67         * Tester flvtool2
68         */
69        exec('flvtool2',$retour_flvtool,$retour_flvtool_int);
70        if($retour_flvtool_int != 0){
71                ecrire_config('spipmotion_flvtool_casse', 'oui');
72                $erreurs[] = 'flvtool2';
73        }else{
74                effacer_config('spipmotion_flvtool_casse');
75        }
76
77        /**
78         * Tester qt-faststart
79         */
80        exec('qt-faststart',$retour_qt_faststart,$retour_qt_faststart_int);
81        if($retour_qt_faststart_int != 0){
82                ecrire_config('spipmotion_qt-faststart_casse', 'oui');
83                $erreurs[] = 'qt-faststart';
84        }else{
85                effacer_config('spipmotion_qt-faststart_casse');
86        }
87       
88        /**
89         * Tester mediainfo
90         * MediaInfo n'est pas indispensable au bon fonctionnement
91         * On n'envoie pas de mail de notification
92         * On ne bloquera pas les encodages
93         */
94        exec('mediainfo --help',$retour_mediainfo,$retour_mediainfo_int);
95        spip_log($retour_mediainfo,'test');
96        spip_log($retour_mediainfo_int,'test');
97        if(!in_array($retour_mediainfo_int,array(0,255))){
98                ecrire_config('spipmotion_mediainfo_casse', 'oui');
99        }else{
100                effacer_config('spipmotion_mediainfo_casse');
101        }
102
103        /**
104         * Tester le script spipmotion.sh présent dans script_bash/
105         * Si le safe_mode est activé, il doit se trouver dans le répertoire des scripts autorisés
106         */
107        if($safe_mode == 1){
108                $spipmotion_sh = $safe_mode_path.'/spipmotion.sh';
109        }else{
110                $spipmotion_sh = find_in_path('script_bash/spipmotion.sh');
111        }
112        exec($spipmotion_sh." --help",$retour_spipmotionsh,$retour_spipmotionsh_int);
113        if($retour_spipmotionsh_int != 0){
114                ecrire_config('spipmotion_spipmotionsh_casse', 'oui');
115                $erreurs[] = 'spipmotion.sh';
116        }else{
117                effacer_config('spipmotion_spipmotionsh_casse');
118        }
119
120        /**
121         * Tester ffmpeg
122         */
123        if($valeurs['chemin'] != ''){
124                exec($spipmotion_sh." --p ".$valeurs['chemin']." --info '-version'",$retour_ffmpeg,$retour_int_ffmpeg);
125                spip_log($retour_ffmpeg);
126                spip_log($retour_int_ffmpeg);
127                if($retour_int_ffmpeg != 0){
128                        ecrire_config('spipmotion_ffmpeg_casse', 'oui');
129                        $erreurs[] = 'ffmpeg';
130                }else{
131                        effacer_config('spipmotion_ffmpeg_casse');
132                }
133        }else{
134                exec($spipmotion_sh." --info -version",$retour_ffmpeg,$retour_int_ffmpeg);
135                spip_log($retour_ffmpeg);
136                spip_log($retour_int_ffmpeg);
137                if($retour_int_ffmpeg != 0){
138                        ecrire_config('spipmotion_casse', 'oui');
139                        $erreurs[] = 'ffmpeg';
140                }else{
141                        if($GLOBALS['meta']['spipmotion_casse'] == 'oui'){
142                                effacer_config('spipmotion_casse');
143                        }
144                }
145        }
146        if (!class_exists('ffmpeg_movie')) {
147                ecrire_config('spipmotion_ffmpeg-php_casse', 'oui');
148                $erreurs[] = 'ffmpeg-php';
149        }else{
150                effacer_config('spipmotion_ffmpeg-php_casse');
151        }
152
153        if(count($erreurs) > 0){
154                ecrire_config('spipmotion_casse', 'oui');
155        }else{
156                effacer_config('spipmotion_casse');
157        }
158
159        if($notif){
160                if ($notifications = charger_fonction('notifications', 'inc')) {
161                        spip_log('notifications verifier_binaires','spipmotion');
162                        spip_log($erreurs,'spipmotion');
163                        $notifications('spipmotion_verifier_binaires', 1,
164                                array(
165                                        'erreurs' => $erreurs
166                                )
167                        );
168                }
169        }
170        return $erreurs;
171}
172?>
Note: See TracBrowser for help on using the repository browser.