dl(): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
 
(5 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
== dl ==
== dl ==
 
Laddar en PHP-tillägg under körning.
'''PHP Versioner:''' PHP 4, PHP 5, PHP 7, PHP 8


=== Beskrivning ===
=== Beskrivning ===
<pre>
dl(string $extension_filename): bool
</pre>
Laddar PHP-tillägget som anges av parametern '''extension_filename'''.


`dl` laddar en PHP-tilläggsmodul vid körning (runtime). Detta gör det möjligt att dynamiskt lägga till funktionalitet i PHP-skript utan att behöva starta om servern eller ändra `php.ini`. Funktionen är endast tillgänglig för CLI och inbäddade SAPIs, samt för CGI SAPI när den körs från kommandoraden.
Använd '''extension_loaded()''' för att testa om ett tillägg redan är tillgängligt eller inte. Detta fungerar både för inbyggda tillägg och dynamiskt laddade tillägg (antingen genom php.ini eller dl()).


=== Syntax ===
'''Varning:'''
Den här funktionen är endast tillgänglig för '''CLI''' och '''embed SAPIs''', samt '''CGI SAPI''' när den körs från kommandoraden.


<pre>
=== Parametrar ===
bool dl ( string $extension_filename )
'''extension_filename'''
</pre>
Endast filnamnet på tillägget som ska laddas, vilket också beror på din plattform. Till exempel kallas socket-tillägget (om det är kompilerat som ett delat modul, inte standard!) sockets.so på Unix-plattformar medan det kallas php_sockets.dll på Windows-plattformen.


=== Parametrar ===
Katalogen där tillägget laddas ifrån beror på din plattform:


* '''$extension_filename''' 
'''Windows''' - Om det inte uttryckligen anges i php.ini laddas tillägget från C:\php5\ som standard.
  Filnamnet på tillägget som ska laddas. Filnamnets format varierar beroende på operativsystem:
 
  ** Unix/Linux: ** Till exempel `sockets.so` 
  ** Windows: ** Till exempel `php_sockets.dll`
 
  '''Notera:''' Tillägget måste vara en delad modul (shared module) och inte inbyggd i PHP.


  '''Sökväg till tilläggsfiler:'''
'''Unix''' - Om det inte uttryckligen anges i php.ini, beror standardkatalogen för tillägg på:
  * '''Windows:''' Om det inte är angivet i `php.ini`, laddas tillägget från `C:\php5\` som standard.
* om PHP har byggts med '''--enable-debug''' eller inte
  * '''Unix/Linux:''' Om det inte är angivet i `php.ini` beror standardkatalogen för tillägg på:
* om PHP har byggts med ZTS (Zend Thread Safety) stöd eller inte
    * Om PHP har byggts med `--enable-debug`
* det aktuella interna '''ZEND_MODULE_API_NO''' (Zend intern modul API-nummer)
    * Om PHP har byggts med ZTS (Zend Thread Safety) stöd
    * ZEND_MODULE_API_NO (Zend internal module API nummer), vilket baseras på datumet då en större förändring av modul-API:t skedde, t.ex. `20010901`
   
    Med dessa inställningar hamnar katalogen i `<install-dir>/lib/php/extensions/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO`, t.ex. `/usr/local/php/lib/php/extensions/debug-non-zts-20010901` eller `/usr/local/php/lib/php/extensions/no-debug-zts-20010901`.


=== Returvärden ===
Med tanke på ovanstående, är standardkatalogen <install-dir>/lib/php/extensions/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, till exempel /usr/local/php/lib/php/extensions/debug-non-zts-20010901 eller /usr/local/php/lib/php/extensions/no-debug-zts-20010901.


* '''true'''
=== Returnerar ===
  Vid lyckad laddning av tillägget.
Returnerar '''true''' vid framgång eller '''false''' vid misslyckande. Om funktionaliteten för att ladda moduler inte är tillgänglig eller har inaktiverats (genom att ställa in '''enable_dl off''' i php.ini), avges ett '''E_ERROR''' och exekveringen stoppas. Om dl() misslyckas på grund av att det specificerade biblioteket inte kunde laddas, returneras även '''false''' och ett E_WARNING meddelande avges.
 
* '''false'''
  Vid misslyckad laddning. Om funktionen inte är tillgänglig eller inaktiverad (via `enable_dl` satt till `off` i `php.ini`), genereras ett `E_ERROR` och exekveringen stoppas. Vid misslyckad laddning av tillägget genereras också ett `E_WARNING` utöver att `false` returneras.


=== Exempel ===
=== Exempel ===
==== Exempel #1: Ladda ett tillägg baserat på operativsystem ====
<pre>
<pre>
<?php
<?php
// Kontrollerar om 'sqlite' tillägget redan är laddat
// Exempel på att ladda ett tillägg baserat på OS
if (!extension_loaded('sqlite')) {
if (!extension_loaded('sqlite')) {
     if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
     if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
Rad 55: Rad 43:
}
}


// Eller använda PHP_SHLIB_SUFFIX konstanten
// Eller med PHP_SHLIB_SUFFIX konstanten
if (!extension_loaded('sqlite')) {
if (!extension_loaded('sqlite')) {
     $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
     $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
Rad 62: Rad 50:
?>
?>
</pre>
</pre>
'''Förväntad utdata:'''
* Om tillägget laddas framgångsrikt kan du använda de funktioner som tillägget erbjuder.
* Vid misslyckad laddning visas varningsmeddelanden.


=== Noteringar ===
=== Noteringar ===
'''Notera:'''
dl() är skiftlägeskänsligt på Unix-plattformar.


* `dl()` är skiftlägeskänslig på Unix-plattformar.
=== Se även ===
* Funktionen är begränsad till vissa SAPIs (CLI och embedded SAPI) och kan vara inaktiverad av säkerhetsskäl i `php.ini`.
* [[Extension Loading Directives]]
 
* [[extension_loaded()]] - Ta reda på om ett tillägg är laddat
=== Relaterade Funktioner ===
 
* [[extension_loaded]] - Kontrollerar om ett tillägg är laddat.


[[Kategori:PHP Funktioner]]
[[Kategori:Tilläggshantering]]
[[Kategori:Systemfunktioner]]





Nuvarande version från 13 oktober 2024 kl. 06.59

dl

Laddar en PHP-tillägg under körning.

Beskrivning

dl(string $extension_filename): bool

Laddar PHP-tillägget som anges av parametern extension_filename.

Använd extension_loaded() för att testa om ett tillägg redan är tillgängligt eller inte. Detta fungerar både för inbyggda tillägg och dynamiskt laddade tillägg (antingen genom php.ini eller dl()).

Varning: Den här funktionen är endast tillgänglig för CLI och embed SAPIs, samt CGI SAPI när den körs från kommandoraden.

Parametrar

extension_filename Endast filnamnet på tillägget som ska laddas, vilket också beror på din plattform. Till exempel kallas socket-tillägget (om det är kompilerat som ett delat modul, inte standard!) sockets.so på Unix-plattformar medan det kallas php_sockets.dll på Windows-plattformen.

Katalogen där tillägget laddas ifrån beror på din plattform:

Windows - Om det inte uttryckligen anges i php.ini laddas tillägget från C:\php5\ som standard.

Unix - Om det inte uttryckligen anges i php.ini, beror standardkatalogen för tillägg på:

  • om PHP har byggts med --enable-debug eller inte
  • om PHP har byggts med ZTS (Zend Thread Safety) stöd eller inte
  • det aktuella interna ZEND_MODULE_API_NO (Zend intern modul API-nummer)

Med tanke på ovanstående, är standardkatalogen <install-dir>/lib/php/extensions/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, till exempel /usr/local/php/lib/php/extensions/debug-non-zts-20010901 eller /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

Returnerar

Returnerar true vid framgång eller false vid misslyckande. Om funktionaliteten för att ladda moduler inte är tillgänglig eller har inaktiverats (genom att ställa in enable_dl off i php.ini), avges ett E_ERROR och exekveringen stoppas. Om dl() misslyckas på grund av att det specificerade biblioteket inte kunde laddas, returneras även false och ett E_WARNING meddelande avges.

Exempel

<?php
// Exempel på att ladda ett tillägg baserat på OS
if (!extension_loaded('sqlite')) {
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        dl('php_sqlite.dll');
    } else {
        dl('sqlite.so');
    }
}

// Eller med PHP_SHLIB_SUFFIX konstanten
if (!extension_loaded('sqlite')) {
    $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
    dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>

Noteringar

Notera: dl() är skiftlägeskänsligt på Unix-plattformar.

Se även


Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.dl.php

PHP Funktioner Funktionsreferens


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp och Datorservice som har sponsrat Linux.se med webserver.