J’essaie de toujours créer des chemins relatifs, pour éviter de devoir modifier des documents si leur racine change.
Pour lire les données de mon Pi sur un site web en PHP, j’avais besoin de trouver automatiquement l’url du site, avec son protocole http ou https selon les cas.
Je me suis inspirée de PHP Document Root, Path and URL detection.

Dans un fichier php, il suffit de placer le code suivant pour savoir à quoi chaque élément correspond :

	<?php
	// http://blog.lavoie.sl/2013/02/php-document-root-path-and-url-detection.html
	$base_dir  = __DIR__; // Absolute path to your installation, ex: /var/www/mywebsite
	$doc_root  = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", '', $_SERVER['SCRIPT_FILENAME']); # ex: /var/www
	$base_url  = preg_replace("!^${doc_root}!", '', $base_dir); # ex: '' or '/mywebsite'
	$protocol  = empty($_SERVER['HTTPS']) ? 'http' : 'https';
	$port      = $_SERVER['SERVER_PORT'];
	$disp_port = ($protocol == 'http' && $port == 80 || $protocol == 'https' && $port == 443) ? '' : ":$port";
	$domain    = $_SERVER['SERVER_NAME'];
	$full_url  = "${protocol}://${domain}${disp_port}${base_url}"; # Ex: 'http://example.com', 'https://example.com/mywebsite', etc.
	?>


<table>
<tbody>
<tr>
<td width="102">$base_dir</td>
<td width="512"><?php echo $base_dir  ; ?></td>
</tr>
<tr>
<td width="102">$doc_root</td>
<td width="512"><?php echo $doc_root  ; ?></td>
</tr>
<tr>
<td width="102">$base_url</td>
<td width="512"><?php echo $base_url  ; ?></td>
</tr>
<tr>
<td width="102">$protocol</td>
<td width="512"><?php echo $protocol  ; ?></td>
</tr>
<tr>
<td width="102">$port</td>
<td width="512"><?php echo $port  ; ?></td>
</tr>
<tr>
<td width="102">$disp_port</td>
<td width="512"><?php echo $disp_port  ; ?></td>
</tr>
<tr>
<td width="102">$domain</td>
<td width="512"><?php echo $domain  ; ?></td>
</tr>
<tr>
<td width="102">$full_url</td>
<td width="512"><?php echo $full_url  ; ?></td>
</tr>
</tbody>
</table>

On obtient le résultat suivant :

$base_dir /var/www/vhosts/domaine.com/pi.domaine.com
$doc_root /var/www/vhosts/domaine.com/pi.domaine.com
$base_url
$protocol https
$port 443
$disp_port
$domain pi.domaine.com
$full_url https://pi.domaine.com

A quoi ça sert ?

Si je veux que le fichier PHP ailler chercher un fichier css dans un répertoire /css, il me suffit maintenant d’ajouter dans <head> :

	<?php
	// http://blog.lavoie.sl/2013/02/php-document-root-path-and-url-detection.html
	$base_dir  = __DIR__; // Absolute path to your installation, ex: /var/www/mywebsite
	$doc_root  = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", '', $_SERVER['SCRIPT_FILENAME']); # ex: /var/www
	$base_url  = preg_replace("!^${doc_root}!", '', $base_dir); # ex: '' or '/mywebsite'
	$protocol  = empty($_SERVER['HTTPS']) ? 'http' : 'https';
	$port      = $_SERVER['SERVER_PORT'];
	$disp_port = ($protocol == 'http' && $port == 80 || $protocol == 'https' && $port == 443) ? '' : ":$port";
	$domain    = $_SERVER['SERVER_NAME'];
	$full_url  = "${protocol}://${domain}${disp_port}${base_url}"; # Ex: 'http://example.com', 'https://example.com/mywebsite', etc.
	?>
   <link rel="stylesheet" href="<?php echo $full_url . '/css/pi-stylesheet.css' ; ?>">

 

Print Friendly, PDF & Email
0 0 votes
Évaluation de l'article
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x