PHP5.3.3のrename処理内部でどんな処理が行われているか確認したいのですが、どのように確認できるか教えていただけますでしょうか。
https://www.php.net/manual/ja/function.rename.php
やったこと
PHP 5.3.3 (tar.bz2) をダウンロードしてrenameで全文検索
https://www.php.net/releases/index.php
結果
下記のfile.cを発見しましたが、方針が合っているかさえ分かっていない状態。
filec
1PHP_FUNCTION(rename) 2{ 3 char *old_name, *new_name; 4 int old_name_len, new_name_len; 5 zval *zcontext = NULL; 6 php_stream_wrapper *wrapper; 7 php_stream_context *context; 8 9 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|r", &old_name, &old_name_len, &new_name, &new_name_len, &zcontext) == FAILURE) { 10 RETURN_FALSE; 11 } 12 13 wrapper = php_stream_locate_url_wrapper(old_name, NULL, 0 TSRMLS_CC); 14 15 if (!wrapper || !wrapper->wops) { 16 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to locate stream wrapper"); 17 RETURN_FALSE; 18 } 19 20 if (!wrapper->wops->rename) { 21 php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s wrapper does not support renaming", wrapper->wops->label ? wrapper->wops->label : "Source"); 22 RETURN_FALSE; 23 } 24 25 if (wrapper != php_stream_locate_url_wrapper(new_name, NULL, 0 TSRMLS_CC)) { 26 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot rename a file across wrapper types"); 27 RETURN_FALSE; 28 } 29 30 context = php_stream_context_from_zval(zcontext, 0); 31 32 RETURN_BOOL(wrapper->wops->rename(wrapper, old_name, new_name, 0, context TSRMLS_CC)); 33}
回答2件
あなたの回答
tips
プレビュー