exec

(PHP 4, PHP 5, PHP 7, PHP 8)

exec β€” Π’ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ Π·ΠΎΠ²Π½Ρ–ΡˆΠ½ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ

Опис

exec(string $command, array &$output = null, int &$result_code = null): string|false

exec() Π²ΠΈΠΊΠΎΠ½ΡƒΡ” ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ command

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π²

command

Команда, яка Π±ΡƒΠ΄Π΅ Π²ΠΈΠΊΠΎΠ½Π°Π½Π°.

output

Π―ΠΊΡ‰ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ output Π²ΠΊΠ°Π·Π°Π½ΠΎ, Ρ‰ΠΎ масив Π±ΡƒΠ΄Π΅ Π·Π°ΠΏΠΎΠ²Π½Π΅Π½ΠΈΠΉ рядками вивСдСння ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. Π—Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡŒΠ½Ρ– ΠΏΡ€ΠΎΠ³Π°Π»ΠΈΠ½ΠΈ, Ρ‚Π°ΠΊΡ– як \n, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ– Π΄ΠΎ масиву. Π—Π²Π΅Ρ€Π½Ρ–Ρ‚ΡŒ ΡƒΠ²Π°Π³Ρƒ, Ρ‰ΠΎ якщо масив Π²ΠΆΠ΅ ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ ΡΠΊΡ–ΡΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ, Ρ‚ΠΎ exec() Π΄ΠΎΠ΄Π°ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ– Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π΄ΠΎ кінця масиву. Π―ΠΊΡ‰ΠΎ Π²ΠΈ Π½Π΅ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅, Ρ‰ΠΎΠ± функція Π΄ΠΎΠ΄Π°Π²Π°Π»Π° Π½ΠΎΠ²Ρ– Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π² ΠΊΡ–Π½Π΅Ρ†ΡŒ, Π²ΠΈΠΊΠ»ΠΈΡ‡Ρ‚Π΅ unset() Π½Π° Ρ†ΡŒΠΎΠΌΡƒ масиві, ΠΏΠ΅Ρ€Ρˆ Π½Ρ–ΠΆ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΠΈ ΠΉΠΎΠ³ΠΎ Π² exec()

result_code

Π―ΠΊΡ‰ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ result_code присутній Ρ€Π°Π·ΠΎΠΌ Π· output, Π’ΠΎΠ΄Ρ– статус повСрнСння Π²ΠΈΠΊΠΎΠ½Π°Π½ΠΎΡ— ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π±ΡƒΠ΄Π΅ записаний Ρƒ Ρ†Ρ–ΠΉ Π·ΠΌΡ–Π½Π½Ρ–ΠΉ.

ЗначСння, Ρ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°ΡŽΡ‚ΡŒΡΡ

ΠžΡΡ‚Π°Π½Π½Ρ–ΠΉ рядок Ρ–Π· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. Π―ΠΊΡ‰ΠΎ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ всі Π΄Π°Π½Ρ– ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π±Π΅Π· Π±ΡƒΠ΄ΡŒ-якої ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠΈ, використовуйтС Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ passthru()

ΠŸΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” **false**Π² случаС возникновСния ошибки.

Π©ΠΎΠ± ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ виконання ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, пСрСконайтСся, Ρ‰ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ output Ρ–Π½Ρ–Ρ†Ρ–Π°Π»Ρ–Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚Π° Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ.

Помилки

Π’ΠΈΠ΄Π°Ρ” ΠΏΠΎΠΌΠΈΠ»ΠΊΡƒ рівня E_WARNING, якщо функція exec() Π½Π΅ ΠΌΠΎΠΆΠ΅ Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ command

Π’ΠΈΠΊΠΈΠ΄Π°Ρ” виняток ValueError, якщо ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ command Π½Π΅ Π²ΠΊΠ°Π·Π°Π½ΠΎ Π°Π±ΠΎ ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ Π½ΡƒΠ»ΡŒΠΎΠ²Ρ– Π±Π°ΠΉΡ‚ΠΈ.

список Π·ΠΌΡ–Π½

Π’Π΅Ρ€ΡΠΈΡΠžΠΏΠΈΡ
8.0.0Π―ΠΊΡ‰ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ command Π½Π΅ Π²ΠΊΠ°Π·Π°Π½ΠΎ Π°Π±ΠΎ ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ Π½ΡƒΠ»ΡŒΠΎΠ²Ρ– Π±Π°ΠΉΡ‚ΠΈ, функція exec() Ρ‚Π΅ΠΏΠ΅Ρ€ Π²ΠΈΠΊΠΈΠ΄Π°Ρ” виняток ValueError; Ρ€Π°Π½Ρ–ΡˆΠ΅ Π²ΠΎΠ½Π° Π²ΠΈΠ΄Π°Π²Π°Π»Π° ΠΏΠΎΠΌΠΈΠ»ΠΊΡƒ рівня E_WARNING Ρ– ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Π»Π° false

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #1 ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— exec()

Loading...

Висновок Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρƒ Π±ΡƒΠ΄Π΅ схоТим Π½Π°:

Π’Π΅Ρ€Π½Ρ‘Ρ‚ статус 0 ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:
Array
(
    [0] => cmb
)

ΠŸΡ€ΠΈΠΌΡ–Ρ‚ΠΊΠΈ

Π£Π²Π°Π³Π°

Π―ΠΊΡ‰ΠΎ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Π΄Π°Π½Ρ– користувача, Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡŽΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— escapeshellarg() Π°Π±ΠΎ escapeshellcmd()Ρ‰ΠΎΠ± користувачі Π½Π΅ Π·ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±Π΄ΡƒΡ€ΠΈΡ‚ΠΈ систСму, Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠΈ Π΄ΠΎΠ²Ρ–Π»ΡŒΠ½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

ЗауваТСння :

Π―ΠΊΡ‰ΠΎ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ‚ΠΈ Ρ†ΡŽ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡ–, Ρ‰ΠΎ ΠΏΡ€Π°Ρ†ΡŽΡ” як Π΄Π΅ΠΌΠΎΠ½, ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΡΡŽΡ‚ΡŒ, Ρ‰ΠΎ стандартнС вивСдСння Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Ρƒ Ρ„Π°ΠΉΠ» Π°Π±ΠΎ Ρ–Π½ΡˆΠΈΠΉ ΠΏΠΎΡ‚Ρ–ΠΊ, Ρ–Π½Π°ΠΊΡˆΠ΅ PHP зависнС Π°ΠΆ Π΄ΠΎ кінця виконання ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ.

ЗауваТСння :

Π’ Windows функцияexec() Запуск ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ запускає ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΠΉ рядок cmd.exe. Π―ΠΊΡ‰ΠΎ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ запустити Π·ΠΎΠ²Π½Ρ–ΡˆΠ½ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ Π±Π΅Π· запуску ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ рядка cmd.exe, Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡŽΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ proc_open() Ρ–Π· Π²ΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΎΡŽ ΠΎΠΏΡ†Ρ–Ρ”ΡŽ bypass_shell

Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΆ

  • system() - Π’ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ Π·ΠΎΠ²Π½Ρ–ΡˆΠ½ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ Ρ‚Π° Π²Ρ–Π΄ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΠΈ висновок
  • passthru() - Π’ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ Π·ΠΎΠ²Π½Ρ–ΡˆΠ½ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ Ρ‚Π° Π²Ρ–Π΄ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠΉ висновок
  • escapeshellcmd() - Π•ΠΊΡ€Π°Π½ΡƒΠ²Π°Ρ‚ΠΈ мСтасимволи ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ рядка
  • pcntl_exec() - Запустити Π²ΠΊΠ°Π·Π°Π½Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ Π² Π³Π°Π»ΡƒΠ·Ρ– ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ процСсу
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ виконання