PHP 7.4 vai jaunākā versijā turiet komandas argumentus un apakšprocesa vidi atsevišķi:

$environment = array_replace(getenv(), [
    'http_proxy' => 'http://proxy.example:8080',
    'https_proxy' => 'http://proxy.example:8080',
]);

$process = proc_open(
    ['/usr/bin/curl', '--fail', '--max-time', '30',
     '--output', $outputFile, 'https://downloads.example/data.csv'],
    $descriptorSpec,
    $pipes,
    null,
    $environment
);

$outputFile un $descriptorSpec nāk no lietotnes esošās izvades apstrādes. Pārbaudiet neveiksmīgu palaišanu, pārvaldiet caurules un aizveriet procesu šajā dzīves ciklā.

array_replace(getenv(), ...) saglabā vecāku vidi un aizstāj šīs divas vērtības apakšprocesam. Pārskatiet mantotos lielo burtu starpniekservera un apiešanas mainīgos, ja tie var mainīt paredzēto maršrutu.

Argumentu masīvs neļauj čaulai interpretēt akreditācijas datu ampersandus, dolāra zīmes vai atstarpes. Čaulas komandā nav iegultas piešķiršanas, kas satur kontu.

Šajā piemērā izvēlēts curl, jo tas atbalsta parādītos mainīgos. Adrese no HTTP starpniekserveru saraksta var aizpildīt šīs vides vērtības publiskam HTTP maršrutam. Citai izpildāmajai datnei ir vajadzīga sava atbalstītā starpniekservera saskarne; pašas PHP cURL opcijas nekonfigurē šo ārējo programmu.

Saistītie raksti