Commit: bae56a87f81b91cd815604b0f404f616b0d73c2b Author: Xinchen Hui <larue...@php.net> Mon, 30 Apr 2012 12:09:22 +0800 Parents: 9aff3a1156efdfae7660d5b5e7a6d8b29c263722 Branches: PHP-5.3
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=bae56a87f81b91cd815604b0f404f616b0d73c2b Log: Fixed bug #61546 (functions related to current script failed when chdir() in cli sapi). Bugs: https://bugs.php.net/61546 Changed paths: M NEWS M sapi/cli/php_cli.c A sapi/cli/tests/bug61546.phpt Diff: diff --git a/NEWS b/NEWS index a49ecfa..7bb6cc0 100644 --- a/NEWS +++ b/NEWS @@ -2,11 +2,15 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2012, PHP 5.3.12 +- CLI SAPI: + . Fixed bug #61546 (functions related to current script failed when chdir() + in cli sapi). (Laruence, reeze....@gmail.com) + - Core: . Fixed missing bound check in iptcparse(). (chris at chiappa.net) . Fixed bug #61764 ('I' unpacks n as signed if n > 2^31-1 on LP64). (Gustavo) . Fixed bug #54197 ([PATH=] sections incompatibility with user_ini.filename - set to null). (Anatoliy) + set to null). (Anatoliy) - Fileinfo: . Fixed bug #61812 (Uninitialised value used in libmagic). diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c index 0fbf7c8..f26db43 100644 --- a/sapi/cli/php_cli.c +++ b/sapi/cli/php_cli.c @@ -648,7 +648,7 @@ int main(int argc, char *argv[]) int orig_optind=php_optind; char *orig_optarg=php_optarg; char *arg_free=NULL, **arg_excp=&arg_free; - char *script_file=NULL; + char *script_file=NULL, *translated_path = NULL; int interactive=0; volatile int module_started = 0; volatile int request_started = 0; @@ -1053,8 +1053,13 @@ int main(int argc, char *argv[]) if (script_file) { if (cli_seek_file_begin(&file_handle, script_file, &lineno TSRMLS_CC) != SUCCESS) { goto err; + } else { + char real_path[MAXPATHLEN]; + if (VCWD_REALPATH(script_file, real_path)) { + translated_path = strdup(real_path); + } + script_filename = script_file; } - script_filename = script_file; } else { /* We could handle PHP_MODE_PROCESS_STDIN in a different manner */ /* here but this would make things only more complicated. And it */ @@ -1073,7 +1078,7 @@ int main(int argc, char *argv[]) SG(request_info).argc=argc-php_optind+1; arg_excp = argv+php_optind-1; arg_free = argv[php_optind-1]; - SG(request_info).path_translated = file_handle.filename; + SG(request_info).path_translated = translated_path? translated_path : file_handle.filename; argv[php_optind-1] = file_handle.filename; SG(request_info).argv=argv+php_optind-1; diff --git a/sapi/cli/tests/bug61546.phpt b/sapi/cli/tests/bug61546.phpt new file mode 100644 index 0000000..2cd690f --- /dev/null +++ b/sapi/cli/tests/bug61546.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #61546 (functions related to current script failed when chdir() in cli sapi) +--FILE-- +<?php +$php = getenv("TEST_PHP_EXECUTABLE"); +$test_code = <<<PHP +<?php +chdir('..'); +var_dump(get_current_user() != ""); +chdir('..'); +var_dump(getmyinode() != false); +var_dump(getlastmod() != false); +PHP; + +file_put_contents("bug61546_sub.php", $test_code); +system($php . ' -n bug61546_sub.php'); +unlink("bug61546_sub.php"); +?> +--EXPECT-- +bool(true) +bool(true) +bool(true) -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php