Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:44047 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 3576 invoked from network); 24 May 2009 17:43:16 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 24 May 2009 17:43:16 -0000 X-Host-Fingerprint: 85.21.236.169 xdmitri.static.corbina.ru Received: from [85.21.236.169] ([85.21.236.169:27961] helo=localhost.localdomain) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 6B/C0-13990-237891A4 for ; Sun, 24 May 2009 13:43:15 -0400 Message-ID: <6B.C0.13990.237891A4@pb1.pair.com> To: internals@lists.php.net Date: Sun, 24 May 2009 21:43:13 +0400 Lines: 23 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5512 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-Posted-By: 85.21.236.169 Subject: shell_exec, environment, and multithreading servers From: dmda@yandex.ru ("jvlad") Hi all, Recently I faced with one funny problem in PHP. Seems there is no way to run a sub-process using shell_exec() (or backticks), and pass there specially crafted environment without affecting all running threads. As soon as I update the environment, all other threads see the change. It's multithreading nature to be running under the same process and share the process environment, no problems so far, but there should be a way to run sub-process with appropriate set of environment variables without affecting all the threads. Looks like for Win32 target, there is a popenex() function that is called by shell_exec and this function has env parameter. I think it makes sense to pass $_ENV in this argument. Certainly, $_ENV should be converted into array of pointers. Not sure if there is any way under unix other than using execXX() instead of popen() to get the same behaviour. Thoughts? -jv