In een ini-file 1 waarde wijzigen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

- Ariën -
Beheerder

- Ariën -

07/01/2019 08:51:28
Quote Anchor link
Wat meldt $_SERVER['DOCUMENT_ROOT'] in een echo ?
Gewijzigd op 07/01/2019 08:51:57 door - Ariën -
 
PHP hulp

PHP hulp

20/03/2019 11:23:03
 
Frits van Leeuwen

Frits van Leeuwen

07/01/2019 09:27:07
Quote Anchor link
$_SERVER['DOCUMENT_ROOT'] = /share/Web

De PHP-bestanden staan op dat is de basis van alle websites op mijn nas. Daar achter staat staan dus de domeienen met subdomeinen
Zo is het bij deze <domeinnaam>/versie12 (Daar staan de PHP bestanden van deze versie)
Hier staat ook het bestand testnaam.ini En die wil ik muteren.
Gewijzigd op 07/01/2019 09:31:51 door Frits van Leeuwen
 
- Ariën -
Beheerder

- Ariën -

07/01/2019 09:32:10
Quote Anchor link
Gebruik dat eens in je functie.

Noot: Even ter info. DOCUMENT_ROOT is niet geschikt om in cronjobs te gebruiken. Mocht je dit ooit willen doen...
Gewijzigd op 07/01/2019 09:34:33 door - Ariën -
 
Frits van Leeuwen

Frits van Leeuwen

07/01/2019 09:54:49
Quote Anchor link
Dat geeft het zelfde resultaat.
Ik heb eerst het document verwijderd. Toen de installatie gedaan. Met nieuwe data. Echter hij geeft de oude data.

Ik heb toen een nieuwe naam gegeven aan het document, Toen plaatste hij wel de nieuwe data in het document met de nieuwe naam.


Het ziet er dus naar uit dat hij een eerder document met die naam activeert.
Daardoor is een mutatie dus ook niet mogelijk.
Gewijzigd op 07/01/2019 10:08:42 door Frits van Leeuwen
 
Ozzie PHP

Ozzie PHP

07/01/2019 10:08:09
Quote Anchor link
Als ik even heel snel een blik erop werp ...

Eerst gebruik je $_GET['vernr'] om te bepalen of er een nieuwe versie is.

Zo ja, gebruik je vervolgens bij het wegschrijven gewoon weer $versienummer (dit is het oude versienummer) in plaats van $_GET['vernr'].
 
Frits van Leeuwen

Frits van Leeuwen

07/01/2019 10:12:51
Quote Anchor link
Ozzie PHP, Bedankt voor de opmerking. Maar nee, $Get['vernr'] wordt in een ander php bestand opgehaald en meegezonden naar install.php . Dus dat is de oude. In install.php maak zet ik het nieuwe versienummer is $versienummer Dus dat is wel goed.
 
Ozzie PHP

Ozzie PHP

07/01/2019 10:15:09
Quote Anchor link
Op welke regel in de code die je geplaatst hebt, wordt het gewijzigde bestand opgeslagen?
 
- Ariën -
Beheerder

- Ariën -

07/01/2019 10:15:31
Quote Anchor link
Test het eens uit in een minder complexe situaties, en vervang eerst alleen een 'a' door een 'b' bijvoorbeeld.
 
Frits van Leeuwen

Frits van Leeuwen

07/01/2019 13:00:51
Quote Anchor link
Deze code gebruik ik nu voor de test voor het aanmaken van het bestand
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');

//functie om ini-bestand te maken
function write_ini($filename, $b) {
    $output = '';
    foreach ($b as $section => $settings) {
        $output .= '[' . $section . ']' . PHP_EOL;
        foreach ($settings as $key => $value) {
            $output .= $key . ' = ' . $value . PHP_EOL;
        }

        $output .= PHP_EOL;
    }

    file_put_contents($filename, $output);
    return true;
}


$filename = $_SERVER['DOCUMENT_ROOT']."/geldboom.nl/versie012/testnaam.ini";
$versienummer = "0.1.1";
$programmanaam = "testnaam";
$root = "root";
$root_password = "admin";

//gegevens voor geldboom.ini bepalen
$b = array(
'algemeen'=>array(
    'programmanaam'=>$programmanaam,
    'versienummer'=>$versienummer),
'db_verbinding'=>array(
    'host'=>'localhost',
    'gebruiker'=>'testnaam',
    'wachtwoord'=>'testnaam',
    'database'=>'db_testnaam'));

write_ini($filename, $b);
?>


Deze code gebruik ik om het bestand te muteren
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');

//functie om ini-bestand te maken
function write_ini($filename, $b) {
    $output = '';
    foreach ($b as $section => $settings) {
        $output .= '[' . $section . ']' . PHP_EOL;
        foreach ($settings as $key => $value) {
            $output .= $key . ' = ' . $value . PHP_EOL;
        }

        $output .= PHP_EOL;
    }

    file_put_contents($filename, $output);
    return true;
}


$filename = $_SERVER['DOCUMENT_ROOT']."/geldboom.nl/versie012/testnaam.ini";
$versienummer = "0.1.2";
$programmanaam = "testnaam";
$root = "root";
$root_password = "admin";

$b = parse_ini_file($filename,true);
$b['algemeen']['versienummer'] = $versienummer;
write_ini($filename,$b);
                
?>



Het aanmaken lukt, het muteren geeft het probleem zoals we al langere tijd hebben. Of te wijl, er wordt niets veranderd in het bestand.
 
Ozzie PHP

Ozzie PHP

07/01/2019 13:18:04
Quote Anchor link
Voeg in het bestand om te muteren op het eind eens dit stukje code toe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

echo '<pre>';
var_dump($b);

?>

Wat staat er nu op je scherm?
 
- Ariën -
Beheerder

- Ariën -

07/01/2019 13:22:16
Quote Anchor link
Ga eens na of de modified-date wel wordt aangepast.
Dan weet je in eider geval of het bestand 'aangeraakt' wordt, of niet.

Ook hoop ik dat dit ini-bestand niet oproepbaar is door anderen. Dat is het nadeel van .ini, .json en .xml bestanden; ze worden niet geparsed. Bij .php gebeurt dit wel, waardoor een config.php altijd leeg is. Het beste is dat je ook deze buiten je webroot zet.
 
Frits van Leeuwen

Frits van Leeuwen

07/01/2019 13:23:32
Quote Anchor link
Ik heb de code onderaan bij beide geplakt
Bij het aanmaken staat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.1"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}


en bij het muteren staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.2"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}


Dus dat gedeelte gaat goed.
 
Ozzie PHP

Ozzie PHP

07/01/2019 13:30:50
Quote Anchor link
Voeg na dat stukje van net ook nog eens dit toe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

echo '<br>------<br>';
$test = parse_ini_file($filename,true);
var_dump($test);

?>
 
Frits van Leeuwen

Frits van Leeuwen

07/01/2019 14:34:02
Quote Anchor link
bij aanmaken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.1"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}

------
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.1"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}


bij muteren
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.2"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}

------
array(2) {
  ["algemeen"]=>
  array(2) {
    ["programmanaam"]=>
    string(8) "testnaam"
    ["versienummer"]=>
    string(5) "0.1.2"
  }
  ["db_verbinding"]=>
  array(4) {
    ["host"]=>
    string(9) "localhost"
    ["gebruiker"]=>
    string(8) "testnaam"
    ["wachtwoord"]=>
    string(8) "testnaam"
    ["database"]=>
    string(11) "db_testnaam"
  }
}

Het resultaat in het bestand is nog steeds alleen de inhoud van het aanmaken.
 
Ozzie PHP

Ozzie PHP

07/01/2019 14:44:46
Quote Anchor link
Kijk, dit is positief :-)

In het muteren-bestand zie je dat de 2e array hetzelfde is als de eerste.

Echter, de 2e array is ingelezen vanuit het zojuist aangemaakte bestand.

Het werkt dus wel, maar om een of andere reden krijg jij de verkeerde inhoud te zien. Wellicht heeft dat te maken met caching. Maar de code werkt dus prima.
 
Frits van Leeuwen

Frits van Leeuwen

07/01/2019 14:49:03
Quote Anchor link
pffff inderdaad positief. Dank je wel. Ik ga er op een later tijdstip mee verder. Ik denk wel dat ik nu weer verder kan experimenteren.
 
Ozzie PHP

Ozzie PHP

07/01/2019 14:54:42
Quote Anchor link
Graag gedaan. Succes ermee :-)
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.