php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #34367 strange parsing of auto_prepend_file from CmdPrompt
Submitted: 2005-09-04 19:07 UTC Modified: 2005-09-05 11:33 UTC
From: csaba at alum dot mit dot edu Assigned:
Status: Closed Package: Documentation problem
PHP Version: 5CVS-2005-09-04 (CVS) OS: Win XP Pro
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
41 - 5 = ?
Subscribe to this entry?

 
 [2005-09-04 19:07 UTC] csaba at alum dot mit dot edu
Description:
------------
In a main script file, or included file, or auto_prepend_file it does not matter whether doSomething() is before or after function doSomething() {... does something...}
However, this seems broken when the file is an auto_prepend_file and PHP is called from the command line in interactive mode.

Specifically, two of the four scenarios below seem incorrect.  Scenario 2 is the bug described here, whereas scenario 4 is a separate bug report (Bug 33430).

Csaba Gabor from Vienna

Reproduce code:
---------------
Create a file pop.php (test will only work on a windows system because of the COM component):
<?php
  popup ("inside pop.php");
  function popup($text, $title="PHP popup") {
    $oWSH = new COM("WScript.Shell");
    if (is_null($text)) $text = "NULL";
    $oWSH->Popup($text, 4, $title, 131120);
  }
?>

Now from the Cmd Prompt do the following 4 tests:
1. php.exe -d auto_prepend_file=pop.php
2. php.exe -d auto_prepend_file=pop.php -a
3. php.exe -d auto_prepend_file=pop.php pop.php
4. php.exe -d auto_prepend_file=pop.php -r print('Hi');

Expected result:
----------------
1,2: I expect to get a single popup and then have PHP wait for input
3:   I expect to get a single popup and then PHP should complain about popup being redifined
4:   I should get a single popup and the output should show: Hi

Actual result:
--------------
1, 3:  As expected
2:     The reason for this bug report: PHP dies and complains that it doesn't know what the definition of popup is.  Note that if the invocation of popup is moved below the definition, the popup appears as expected.
4.     The only thing that happens is that Hi is printed.  The auto_prepend_file is not loaded so there is no popup.  This is a separate bug report, Bug 33430, at http://bugs.php.net/33430

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-09-05 09:54 UTC] derick@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

This is expected behavior. Unlike PHP's normal mode where the whole script is parsed first, and then executed - in interactive mode it is done line by line. This means that if you call popup() in line 2, the actual function is not yet defined (as you do that later in line 3).
 [2005-09-05 09:56 UTC] sniper@php.net
Need to be documented. -a and -r are really special since they  are meant for just very basic stuff. append/prepend scripts are not something like that.

 [2005-09-05 11:33 UTC] vrana@php.net
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation better.

-a: "Files included through auto_prepend_file and auto_append_file are parsed in this mode but with some restrictions - e.g. functions have to be defined before called."

-r: "This option is meant for a very basic stuff. Thus some configuration directives (e.g. auto_prepend_file and auto_append_file) are ignored in this mode."

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Mar 29 11:01:29 2024 UTC