#2 __FILE__ magic constant containing wrong values

Closed
opened 3 years ago by belliash · 8 comments
belliash commented 3 years ago
Owner

Aer Information

  • Aer Version (or commit ref): e53cfb8ba0
  • Operating System: Linux
  • System Architecture (eg. arm, x86_64, ...): x86_64

Your problem description

When several source files are included/required, the magic constant contains wrong data. Code snippet contains 3 files:

test.php:
<?php
echo FILE . ' - ' . LINE . "\n";
require_once('test2.php');
echo FILE . ' - ' . LINE . "\n";
?>
test2.php:
<?php
echo FILE . ' - ' . LINE . "\n";
require_once('test3.php');
echo FILE . ' - ' . LINE . "\n";
?>
test3.php:
<?php
echo FILE . ' - ' . LINE . "\n";
?>

Expected result differs from the actual result. This bug makes debugging more difficult.

Expected results

test.php - 2

test2.php - 2

test3.php - 2

test2.php - 4

test.php - 4

Current results

test.php - 2

test2.php - 2

test3.php - 2

./test3.php - 4

test2.php - 4

Additional information

debug_backtrace() function is also affected by this bug, but there line number is also not working correctly, returning always 1:

<?php
    echo "TEST:\n"
    var_dump(debug_backtrace());
?>

The above code results in:

TEST:
array(2) {
[line] =>
int(1)
[file] =>
string(8 'test.php')
}

<!-- 1. Please speak English, this is the language all of us can speak and write. 2. Please take a moment to check that your issue doesn't already exist. 3. Please give all relevant information below for bug reports, because incomplete details will be handled as an invalid report. --> # Aer Information - Aer Version (or commit ref): e53cfb8ba0 - Operating System: Linux - System Architecture (eg. arm, x86_64, ...): x86_64 # Your problem description When several source files are included/required, the magic constant contains wrong data. Code snippet contains 3 files: test.php: <?php echo __FILE__ . ' - ' . __LINE__ . "\n"; require_once('test2.php'); echo __FILE__ . ' - ' . __LINE__ . "\n"; ?> test2.php: <?php echo __FILE__ . ' - ' . __LINE__ . "\n"; require_once('test3.php'); echo __FILE__ . ' - ' . __LINE__ . "\n"; ?> test3.php: <?php echo __FILE__ . ' - ' . __LINE__ . "\n"; ?> Expected result differs from the actual result. This bug makes debugging more difficult. # Expected results test.php - 2 test2.php - 2 test3.php - 2 test2.php - 4 test.php - 4 # Current results test.php - 2 test2.php - 2 test3.php - 2 ./test3.php - 4 test2.php - 4 # Additional information debug_backtrace() function is also affected by this bug, but there line number is also not working correctly, returning always 1: <?php echo "TEST:\n" var_dump(debug_backtrace()); ?> The above code results in: TEST: array(2) { [line] => int(1) [file] => string(8 'test.php') }
belliash added the
bug
label 3 years ago
belliash commented 3 years ago
Poster
Owner

This can be related with https://github.com/symisc/PH7/issues/20

This can be related with https://github.com/symisc/PH7/issues/20
BigDave commented 3 years ago

This is the one bug i ran into thats when i decided to give up on my project

This is the one bug i ran into thats when i decided to give up on my project
belliash commented 3 years ago
Poster
Owner

Unfortunately this is a bug in basic functionality and we have to fix it. This will make any kind of debugging harder.

Unfortunately this is a bug in basic functionality and we have to fix it. This will make any kind of debugging harder.
BigDave commented 3 years ago

Im looking into this

Im looking into this
BigDave was assigned by belliash 3 years ago
BigDave commented 3 years ago

i have completed one part but for the life of me i cant think how todo replace ../ etc with the actual dir i will commit changes into file_magic branch shortly i hope the unix eqiv works too but the win32 version does

i have completed one part but for the life of me i cant think how todo replace ../ etc with the actual dir i will commit changes into file_magic branch shortly i hope the unix eqiv works too but the win32 version does
belliash commented 3 years ago
Poster
Owner

This is connected with #3, I think. This is connected with #2, I think. There is a general problem with information about file & line position in PH7. FILE shows some trash, while debug_backtrace() simply gets currently processed file and returns only last callback instead of whole backtrace.

This is connected with #3, I think. This is connected with #2, I think. There is a general problem with information about file & line position in PH7. __FILE__ shows some trash, while debug_backtrace() simply gets currently processed file and returns only last callback instead of whole backtrace.
devnexen commented 3 years ago
Collaborator

How is it now with the current code ?

How is it now with the current code ?
BigDave was assigned by belliash 3 years ago
belliash self-assigned this 3 years ago
belliash commented 3 years ago
Poster
Owner

I'll do my best to close this today.

I'll do my best to close this today.
belliash closed this issue 3 years ago
belliash referenced this issue from a commit 12 months ago
Sign in to join this conversation.
No Milestone
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.