@@ -10,7 +10,7 @@ use dialoguer::{Confirm, Select};
1010
1111use std:: {
1212 fs:: OpenOptions ,
13- io:: { BufRead , BufReader , Write } ,
13+ io:: { BufRead , BufReader , Seek , SeekFrom , Write } ,
1414 path:: PathBuf ,
1515 process:: { Command , Stdio } ,
1616} ;
@@ -207,6 +207,8 @@ impl Install {
207207 let line = line. with_context ( || "Failed to read line from `php.ini`" ) ?;
208208 if !line. contains ( & ext_line) {
209209 new_lines. push ( line) ;
210+ } else {
211+ bail ! ( "Extension already enabled." ) ;
210212 }
211213 }
212214
@@ -216,6 +218,8 @@ impl Install {
216218 }
217219
218220 new_lines. push ( ext_line) ;
221+ file. seek ( SeekFrom :: Start ( 0 ) ) ?;
222+ file. set_len ( 0 ) ?;
219223 file. write ( new_lines. join ( "\n " ) . as_bytes ( ) )
220224 . with_context ( || "Failed to update `php.ini`" ) ?;
221225 }
@@ -318,7 +322,6 @@ impl Remove {
318322 . read ( true )
319323 . write ( true )
320324 . create ( true )
321- . truncate ( true )
322325 . open ( php_ini)
323326 . with_context ( || "Failed to open `php.ini`" ) ?;
324327
@@ -330,6 +333,8 @@ impl Remove {
330333 }
331334 }
332335
336+ file. seek ( SeekFrom :: Start ( 0 ) ) ?;
337+ file. set_len ( 0 ) ?;
333338 file. write ( new_lines. join ( "\n " ) . as_bytes ( ) )
334339 . with_context ( || "Failed to update `php.ini`" ) ?;
335340 }
0 commit comments