sous - savoir si php est installé linux




Script PHP-détecter si fonctionnant sous linux ou Windows? (8)

Cela devrait fonctionner en PHP 4.3+:

if (strtolower(PHP_SHLIB_SUFFIX) === 'dll')
{
    // Windows
}
else
{
    // Linux/UNIX/OS X
}

J'ai un script PHP qui peut être placé sur un système Windows ou un système Linux. Je dois exécuter des commandes différentes dans les deux cas.

Comment puis-je détecter dans quel environnement je suis? (de préférence quelque chose de php plutôt que de hacks système astucieux)

pardon pardon!! le script fonctionne à partir de la ligne de commande !!!!


De http://www.php.net/manual/en/reserved.variables.server.php#102162 :

<?php
echo '<table border="1">';

foreach ($_SERVER as $k => $v){
    echo "<tr><td>" . $k ."</td><td>" . $v . "</td></tr>";
}

echo "</table>"
?>

C'est tout le tableau $ _SERVER ... comme l'a noté ArtWorkAD, en utilisant la clé HTTP_USER_AGENT, vous pouvez extraire le système d'exploitation plus explicitement.



Pour détecter si c'est Windows, OS X ou Linux:

if (stripos(PHP_OS, 'win') === 0) {
    // code for windows
} elseif (stripos(PHP_OS, 'darwin') === 0) {
    // code for OS X
} elseif (stripos(PHP_OS, 'linux') === 0) {
    // code for Linux
}

stripos est un peu plus lent que substr dans ce cas particulier, mais il est assez efficace pour une si petite tâche, et plus élégant.


Vous pouvez vérifier si le séparateur de répertoire est / (pour unix / linux / mac) ou \ sur windows. Le nom de la constante est DIRECTORY_SEPARATOR

if (DIRECTORY_SEPARATOR == '/') {
    // unix, linux, mac
}

if (DIRECTORY_SEPARATOR == '\\') {
    // windows
}

Vous pouvez vérifier si une constante existe en PHP> 5.3.0 ( manuel )

if (defined('PHP_WINDOWS_VERSION_BUILD')) {
    // is Windows
}

Auparavant, cette méthode était utilisée dans Symfony. Maintenant, ils utilisent une méthode différente :

if ('\\' === DIRECTORY_SEPARATOR) {
    // is Windows
}

Vérifiez la valeur de la constante PHP_OS Docs .

Il vous donnera différentes valeurs sur Windows comme WIN32 , WINNT ou Windows .

Voir aussi: Valeurs possibles pour: PHP_OS et php_unameDocs :

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    echo 'This is a server using Windows!';
} else {
    echo 'This is a server not using Windows!';
}

function isWin(){
 if (strtolower(substr(PHP_OS, 0, 3)) === 'win' || PHP_SHLIB_SUFFIX == 'dll' || PATH_SEPARATOR == ';') {
    return true;
 } else {
    return false;
 }
}




detect