Как обновить файл .env с формой symfony4 - PullRequest
0 голосов
/ 19 апреля 2019

Я хотел бы обновить файл .env с помощью формы, но когда я записываю в файл .env и проверяю, могу ли я подключиться, это не работает.

спасибо.

это главный контроллер

...

$form = $this->createForm(ConfigurationType::class);            
            if($request->isMethod('POST')){                             
                $form->handleRequest($request);             
                if($form->isSubmitted() && $form->isValid()){                   
                    $data_form = $form->getData();
                    unset($form);               
                    $form = $this->createForm(ConfigurationType::class);                    

                    $new_conf2 = "DATABASE_URL=mysql://".$data_form['username'].":".$data_form['password']."@".$data_form['adresse']."/";
                    $lines = file('../.env');                                   
                    $temp = "";

                    foreach($lines as $line){                       
                        if(strstr($line, "DATABASE_URL")){
                            echo "C'est la bonne.";
                        }else{
                            echo "Non";
                            $temp .= $line;
                        }
                    }

                    $temp2 = $temp;

                    try{                        
                        $nom_bd = "symfony_test";                           
                        $temp2 .= $new_conf2;
                        file_put_contents('../.env');                                                   
                        $em = $this->getDoctrine()->getManager();
                        $em->getConnection()->connect();                            
                        $connected = $em->getConnection()->isConnected();                                           
                        $sql ="CREATE DATABASE ".$nom_db;                           
                        $stmt = $em->getConnection()->prepare($sql);                            
                        $result = $stmt->execute();                             
                        return $this->redirectToRoute('index');                                                                             
                    }catch(\Exception $e){
                        echo "Erreur pas de connexion".$e->getMessage();                            
                    }                   
                }

...

1 Ответ

0 голосов
/ 30 апреля 2019

Если это ваш реальный код, я думаю, проблема в том, что вы предоставляете только один аргумент для file_put_contents (). Требуется как минимум два. Второе - это данные, которые будут записаны в файл.

                try{                        
                    $nom_bd = "symfony_test";                           
                    $temp2 .= $new_conf2;

                    file_put_contents('../.env', $theDataToBeWritten );// <--

                    $em = $this->getDoctrine()->getManager();
                    $em->getConnection()->connect();                            
                    $connected = $em->getConnection()->isConnected();                                           
                    $sql ="CREATE DATABASE ".$nom_db;                           
                    $stmt = $em->getConnection()->prepare($sql);                            
                    $result = $stmt->execute();                             
                    return $this->redirectToRoute('index');                                                                             
                }catch(\Exception $e){
                    echo "Erreur pas de connexion".$e->getMessage();                            
                }              

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...