In een ini-file 1 waarde wijzigen.
Gewijzigd op 07/01/2019 08:51:57 door - Ariën -
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
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 -
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
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'].
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.
Op welke regel in de code die je geplaatst hebt, wordt het gewijzigde bestand opgeslagen?
Test het eens uit in een minder complexe situaties, en vervang eerst alleen een 'a' door een 'b' bijvoorbeeld.
Code (php)
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
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);
?>
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)
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
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);
?>
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.
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.
Bij het aanmaken staat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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"
}
}
["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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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"
}
}
["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.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
echo '<br>------<br>';
$test = parse_ini_file($filename,true);
var_dump($test);
?>
echo '<br>------<br>';
$test = parse_ini_file($filename,true);
var_dump($test);
?>
Code (php)
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
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"
}
}
["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)
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
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.
["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.
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.
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.
Graag gedaan. Succes ermee :-)