|
|
|
@ -115,6 +115,10 @@ |
|
|
|
#endif |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
#ifndef S_ISREG |
|
|
|
#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) |
|
|
|
#endif |
|
|
|
|
|
|
|
PHPAPI int (*php_register_internal_extensions_func)(TSRMLS_D) = php_register_internal_extensions; |
|
|
|
|
|
|
|
#ifndef ZTS |
|
|
|
@ -276,13 +280,14 @@ static void php_binary_init(TSRMLS_D) |
|
|
|
if ((envpath = getenv("PATH")) != NULL) { |
|
|
|
char *search_dir, search_path[MAXPATHLEN]; |
|
|
|
char *last = NULL; |
|
|
|
struct stat s; |
|
|
|
|
|
|
|
path = estrdup(envpath); |
|
|
|
search_dir = php_strtok_r(path, ":", &last); |
|
|
|
|
|
|
|
while (search_dir) { |
|
|
|
snprintf(search_path, MAXPATHLEN, "%s/%s", search_dir, sapi_module.executable_location); |
|
|
|
if (VCWD_REALPATH(search_path, binary_location) && !VCWD_ACCESS(binary_location, X_OK)) { |
|
|
|
if (VCWD_REALPATH(search_path, binary_location) && !VCWD_ACCESS(binary_location, X_OK) && VCWD_STAT(binary_location, &s) == 0 && S_ISREG(s.st_mode)) { |
|
|
|
found = 1; |
|
|
|
break; |
|
|
|
} |
|
|
|
|