ສຳລັບ PHP 7.4 ຫຼືໃໝ່ກວ່າ, ໃຫ້ແຍກອາກູເມັນຂອງຄຳສັ່ງ ແລະ ສະພາບແວດລ້ອມຂອງຂະບວນການລູກ:

$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 ແລະ $descriptorSpec ມາຈາກການຈັດການຜົນລັບທີ່ມີຢູ່ແລ້ວຂອງແອັບພລິເຄຊັນ. ກວດເບິ່ງການເລີ່ມທີ່ລົ້ມເຫລວ, ຈັດການທໍ່ ແລະ ປິດຂະບວນການຜ່ານວົງຈອນຊີວິດນັ້ນ.

array_replace(getenv(), ...) ຮັກສາສະພາບແວດລ້ອມຂອງພໍ່ແມ່ ໃນຂະນະທີ່ປ່ຽນຄ່າສອງອັນນີ້ສຳລັບລູກ. ທົບທວນຕົວປ່ຽນພຣັອກຊີ ແລະ ການຂ້າມທີ່ຮັບມໍລະດົກເປັນຕົວພິມໃຫຍ່ ເມື່ອມັນສາມາດປ່ຽນເສັ້ນທາງທີ່ຕັ້ງໃຈໄດ້.

ອາເຣອາກູເມັນປ້ອງກັນບໍ່ໃຫ້ shell ຕີຄວາມໝາຍເຄື່ອງໝາຍ ampersand, ເຄື່ອງໝາຍໂດລາ ຫຼື ຊ່ອງຫວ່າງຂອງຂໍ້ມູນຢືນຢັນຕົວຕົນ. ບໍ່ມີການກຳນົດຄ່າທີ່ຖືບັນຊີຝັງຢູ່ໃນຄຳສັ່ງ shell.

ຕົວຢ່າງນີ້ເລືອກ curl ເພາະມັນຮອງຮັບຕົວປ່ຽນທີ່ສະແດງ. ທີ່ຢູ່ຈາກລາຍຊື່ພຣັອກຊີ HTTP ສາມາດຕື່ມຄ່າສະພາບແວດລ້ອມເຫຼົ່ານັ້ນສຳລັບເສັ້ນທາງ HTTP ສາທາລະນະ. ໄຟລ໌ປະຕິບັດອື່ນຕ້ອງການສ່ວນຕິດຕໍ່ພຣັອກຊີທີ່ມັນຮອງຮັບເອງ; ຕົວເລືອກ cURL ຂອງ PHP ເອງບໍ່ໄດ້ຕັ້ງຄ່າໂປຣແກຣມພາຍນອກນັ້ນ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ