mirror of
https://github.com/php/php-src.git
synced 2024-09-23 10:57:26 +00:00
Fixed bug #73904 php-cgi fails to load -c specified php.ini file
This commit is contained in:
parent
8f6dad150b
commit
9f3b3a55fe
@ -2102,9 +2102,9 @@ consult the installation file that came with this distribution, or visit \n\
|
||||
|
||||
#else
|
||||
if (children) {
|
||||
char *cmd_line;
|
||||
wchar_t *cmd_line_tmp, cmd_line[PHP_WIN32_IOUTIL_MAXPATHLEN];
|
||||
size_t cmd_line_len;
|
||||
char kid_buf[16];
|
||||
char my_name[MAX_PATH] = {0};
|
||||
int i;
|
||||
|
||||
ZeroMemory(&kid_cgi_ps, sizeof(kid_cgi_ps));
|
||||
@ -2115,8 +2115,25 @@ consult the installation file that came with this distribution, or visit \n\
|
||||
/* kids will inherit the env, don't let them spawn */
|
||||
SetEnvironmentVariable("PHP_FCGI_CHILDREN", NULL);
|
||||
|
||||
GetModuleFileName(NULL, my_name, MAX_PATH);
|
||||
cmd_line = my_name;
|
||||
/* The current command line is used as is. This should normally be no issue,
|
||||
even if there were some I/O redirection. If some issues turn out, an
|
||||
extra parsing might be needed here. */
|
||||
cmd_line_tmp = GetCommandLineW();
|
||||
if (!cmd_line_tmp) {
|
||||
DWORD err = GetLastError();
|
||||
char *err_text = php_win32_error_to_msg(err);
|
||||
|
||||
fprintf(stderr, "unable to get current command line: [0x%08lx]: %s\n", err, err_text);
|
||||
|
||||
goto parent_out;
|
||||
}
|
||||
|
||||
cmd_line_len = wcslen(cmd_line_tmp);
|
||||
if (cmd_line_len > sizeof(cmd_line) - 1) {
|
||||
fprintf(stderr, "command line is too long\n");
|
||||
goto parent_out;
|
||||
}
|
||||
memmove(cmd_line, cmd_line_tmp, (cmd_line_len + 1)*sizeof(wchar_t));
|
||||
|
||||
job = CreateJobObject(NULL, NULL);
|
||||
if (!job) {
|
||||
@ -2152,7 +2169,7 @@ consult the installation file that came with this distribution, or visit \n\
|
||||
i = kids;
|
||||
while (0 < i--) {
|
||||
PROCESS_INFORMATION pi;
|
||||
STARTUPINFO si;
|
||||
STARTUPINFOW si;
|
||||
|
||||
if (NULL != kid_cgi_ps[i]) {
|
||||
continue;
|
||||
@ -2167,7 +2184,7 @@ consult the installation file that came with this distribution, or visit \n\
|
||||
si.hStdInput = (HANDLE)_get_osfhandle(fcgi_fd);
|
||||
si.hStdError = INVALID_HANDLE_VALUE;
|
||||
|
||||
if (CreateProcess(NULL, cmd_line, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {
|
||||
if (CreateProcessW(NULL, cmd_line, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {
|
||||
kid_cgi_ps[i] = pi.hProcess;
|
||||
if (!AssignProcessToJobObject(job, pi.hProcess)) {
|
||||
DWORD err = GetLastError();
|
||||
|
Loading…
Reference in New Issue
Block a user