In een ini-file 1 waarde wijzigen.
Wat meldt $_SERVER['DOCUMENT_ROOT'] in een echo ?
Gewijzigd op 07/01/2019 08:51:57 door - Ariën -
$_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.
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
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...
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 -
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.
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
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'].
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.
Deze code gebruik ik nu voor de test voor het aanmaken van het bestand
Deze code gebruik ik om het bestand te muteren
Het aanmaken lukt, het muteren geeft het probleem zoals we al langere tijd hebben. Of te wijl, er wordt niets veranderd in het bestand.
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.
Voeg in het bestand om te muteren op het eind eens dit stukje code toe:
Wat staat er nu op je scherm?
Wat staat er nu op je scherm?
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.
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.
Ik heb de code onderaan bij beide geplakt
Bij het aanmaken staat:
en bij het muteren staat:
Dus dat gedeelte gaat goed.
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.
Voeg na dat stukje van net ook nog eens dit toe:
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);
?>
bij aanmaken
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
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.
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.
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 :-)




