dl(): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
 
(3 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 ===
`dl` laddar en PHP-tilläggsmodul vid körning (runtime). Funktionen laddar tillägget som anges av parametern `extension_filename`.
<pre>
dl(string $extension_filename): bool
</pre>
Laddar PHP-tillägget som anges av parametern '''extension_filename'''.


Använd `extension_loaded()` för att kontrollera om ett givet tillägg redan är tillgängligt eller inte. Detta fungerar för både inbyggda tillägg och dynamiskt laddade tillägg (antingen genom `php.ini` eller `dl()`).
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:'''
'''Varning:'''
Denna funktion är endast tillgänglig för CLI och inbäddade SAPIs, samt för CGI SAPI när den körs från kommandoraden.
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 ===
=== Parametrar ===
* '''extension_filename'''
'''extension_filename'''
  Detta parameter är endast filnamnet på tillägget som ska laddas, vilket också beror på din plattform. Till exempel, skulle sockets-tillägget (om det kompileras som en delad modul, ej standard!) kallas `sockets.so` på Unix-plattformar medan det kallas `php_sockets.dll` på Windows-plattformen.
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)


  Katalogen där tillägget laddas från beror din plattform:
Med tanke 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.
  * '''Windows:''' Om det inte är uttryckligen inställt i `php.ini`, laddas tillägget från `C:\php5\` som standard.
  * '''Unix:''' Om det inte är uttryckligen inställt i `php.ini`, beror standardkatalogen för tillägg på om:
    * PHP har byggts med `--enable-debug`
    * PHP har byggts med ZTS (Zend Thread Safety) stöd
    * Det aktuella interna `ZEND_MODULE_API_NO` (Zend internal module API-nummer, vilket i princip är datumet då en större modul API-ändring inträffade, t.ex. `20010901`)
 
  Genom att ta hänsyn till ovanstående, 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 ===
=== 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` till `off` i `php.ini`), genereras ett `E_ERROR` och exekveringen stoppas. Om `dl()` misslyckas eftersom det specificerade biblioteket inte kunde laddas, genereras ett `E_WARNING`-meddelande utöver att `false` returneras.
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 ===
=== Exempel ===
==== Exempel #1 dl()-exempel ====
<pre>
<pre>
<?php
<?php
// Exempel på att ladda ett tillägg baserat på operativsystem
// 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 40: 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 49: Rad 52:


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


=== Se även ===
=== Se även ===
* '''Extension Loading Directives'''
* [[Extension Loading Directives]]
* [[extension_loaded()]] - Ta reda på om ett tillägg är laddat
 
 


= Sidslut =
= Sidslut =

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.