0

我想用表单更新文件 .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();                            
                    }                   
                }

...

4

1 回答 1

0

如果这是您的实际代码,我认为问题在于您只为 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();                            
                }              

希望有帮助。

于 2019-04-29T22:21:01.067 回答