PHP Testing 2

I am developing on a home network with 2 different PC computers,
#1 is Win 7 w/IE9; #2 is XPpro w/IE8.
Dreamweave CS5.5 on #1
XAMPP on #2 (testing server)
XAMPP control panel reports all is working
Set up Site as follows:
- Site
- - Name: PHP Test Site
- - Local Site Folder: \\#2computername\xampp\htdocs\php_test\
- Servers (only testing is checked)
- - Basic
- - - Server Name: Local Testing
- - - Connect using: Local/Network
- - - Server Folder: \\#2computername\xampp\htdocs\php_test\
- - - Web URL: http://#2computername/xampp/htdocs/php_test/
- - Advanced
- - - ONLY Maintain sync info is checked, and
- - - server model: PHP MySQL
Developed 'timetest.php' per instructions; on 'Save', the timetest.php file goes to the server folder.
The 'design' window shows the text with the PHP icon correctly placed.
On selecting 'live view', the following results:
Access forbidden!
New XAMPP security concept:
Access to the requested object is only available from the local network.
This setting can be configured in the file "httpd-xampp.conf"
If you think this is a server error, please contact the webmaster.
ERROR 403
tom-old-desktop
8/9/2011 2:10:44 am
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1

Firewall settings on Computer #2 (local network test set) shows:
General:  On
Exceptions:  Apache - ON (same with File and Printer Sharing, Network Diagnostics f/XP, Remote Assist, UPnP Framework)
- Remote Desktop is OFF
Under Apache HTTP Server, the path: C:\xampp\apache\bin\httpd.exe
Under Apache 'scope':  Any computer
I suppose I could change scope to "My network (subnet) only" ???
Under Apache 'Advanced Settings', local area connection is checked and
- tab: services: nothing is turned on.
- tab: ICMP: nothing is turned on.
OTHER:
When I use IE on Computer #2 and try to open the 'timetest.php' file directly I get a 'file download' dialog box. (Same result when I try to open it from WinExplorer!)
Suggestions??
Thanks, Tom

Similar Messages

  • Can't get my PHP test e-mail to work

    Hi,
    I am trying to set up a form for my website, I am going through http://www.mindpalette.com/scripts/index.php#NMAnchor to help me, I want a Thank's page sent back to the use with the form info sent to my e-mail. The above download instructions gives me a test PHP page (Have placed in my Local root folder and found on by browser) The test page asks me to type my e-mail address in and send. But I cant retreive the e-mail. I have upgraded my IP web pagage so It accepts scripting. But still no luck. Have also tired sending to other e-mail addresses. Tells me there may be a problems with my out going mail account. All my accounts run from Mac mail.
    Not sure where to go from here.

    LouisaBoyles wrote:
    Ok, so not sure is right, will explain what I have done.
    Placed the php_mail_test.php in the same root folder as my holding page (which is still connected). Created a new site with the local root as same as my index.html holding page, remote info as same also.
    And connected to my remote server.
    But when I type www.denotestationery.com/php_mail_test.php in the browser URL it tells me its not found. Do I need to remove my holding page altogether and replace it with the php file? Or is it not found because I have to give it time to show up?
    I have taken and attached a snap shot of my dreamweaver PHP test page with browser page behind to show you what's going on.
    If you see in the files palette, the PHP page is not on the list. Only the index.html
    I created a new site for the php under the name of e-mail.
    Not sure what process form is. I have just designed my own form in Dreamweaver. Do I need process form?
    If you type www.denotestationery.com/index.html into the browser you get your home page right?
    If you type www.denotestationery.com/php_mail_test.php into the browser AND have uploaded the file to the same place as where the index.html file is it should appear in the browser, yes/no?
    There is no need to create a new site or anything like that.
    Have you actually established that php is running on the server yet by doing a page test?
    processForm is the mail progam you downloaded from Mind Palette which you will use to configure the form you have created should you ever get past base camp
    Hummm just could be 1-2-3 reg....not sure how they set their servers up

  • Assist plaese with PHP testing in Dreamweaver CS4

    Dear Friends,
    I’m completely new in Dreamweaver. I’ve just installed in my windowsXP PHP, MySQL and Apache. I’m trying to test PHP in Dreamweaver CS4. Here what I did but still could not see result in browser view.
    In site definition box,
    in local info:
    site name: PHP test
    local root folder: C:\wamp\www\
    HTTP address: http://localhost/PHPTest.php/
    In testing server:
                Server model: PHP My SQL
                Access: Local/Network
                Testing server folder: C:\Inetpub\wwwroot\
                URL Prefix: http://localhost/PHPTest.php/
    Inside the body script in code view I inserted the following:
    <?php
                echo "This is a PHP line";
                phpinfo();
    ?>
    When I try to see it in browser it shows: Internet Explorer cannot display the webpage
    Please tell me what I did wrong please.
    Thanks,
    Qartveli

    some clues to get you started:
    1. when developing on a local server, make sure that the testing server folder is equal to the local root folder -- means that it´s "C:\wamp\www\" in both cases, otherwise your local server will try to load the current page from the directory "C:\Inetpub\wwwroot" where this page physically doesn´t exist, and that´s why you´re getting the "cannot display the webpage" error message.
    2.
    URL Prefix: http://localhost/PHPTest.php/
    never specify a certain page name in here -- http://localhost/ is all you need for the URL prefix, and the name of the to-be-previewed page will be appended automatically when going to Preview mode..
    Cheers,
    Günter

  • Browsers won't open some php testing server files

    Running DW 8, OS 10.4.10, Apache virtual testing server with
    php local site.
    I've Firefox and Safari as primary and secondary browsers.
    When working on a
    page, if I select 'preview in primary browser', Firefox opens
    the page with
    my virtual url...no problem. Lately, some php files will not
    open. Firefos
    give a dialog to open the file in default (DW) or save to
    disk. This is very
    frustrating since one file it does this to is a login page.
    Safari does the
    same thing!
    I have select the file in question in the finder (extension:
    ,php) and
    through the Get Info and told Mac OS to open this file with
    Firefox and all
    .php extensions. Rebuilt prebinding so all php files in the
    Finder show a
    Firefox icon, but still neither Firefox nor Safari will open
    them. They
    don't recognize the
    <meta http-equiv="Content-Type" content="text/html;
    charset=ISO-8859-1" />
    Metatag. The really frustrating thing is that only some files
    behave this
    way. Most of the others work fine and I can't see anything in
    the headers
    that would cause one to open and not another. Has anyone ever
    run across the
    behavior before and if so, what was the cause?
    Thanks,
    Charles Newbury

    On 10/14/07 10:18 AM, in article
    [email protected], "Joe
    Makowiec"
    <[email protected]> wrote:
    > On 14 Oct 2007 in macromedia.dreamweaver, Charles
    Newbury wrote:
    >
    >> Running DW 8, OS 10.4.10, Apache virtual testing
    server with php
    >> local site.
    >>
    >> I've Firefox and Safari as primary and secondary
    browsers. When
    >> working on a page, if I select 'preview in primary
    browser', Firefox
    >> opens the page with my virtual url...no problem.
    Lately, some php
    >> files will not open. Firefos give a dialog to open
    the file in
    >> default (DW) or save to disk. This is very
    frustrating since one
    >> file it does this to is a login page. Safari does
    the same thing!
    >
    > What happens on the actual server?
    >
    >> I have select the file in question in the finder
    (extension: ,php)
    >> and through the Get Info and told Mac OS to open
    this file with
    >> Firefox and all .php extensions. Rebuilt prebinding
    so all php files
    >> in the Finder show a Firefox icon, but still neither
    Firefox nor
    >> Safari will open them. They don't recognize the
    >>
    >
    > Are you sure that your local server is running? Also,
    I'm no Mac
    > maven, but I'm given to understand that the version of
    Apache which
    > comes installed on Macs is on the underpowered side, and
    should be
    > replaced with a version downloaded from somewhere?
    True, I'm running Apache 1.3, but I'm leery of trying to
    upgrade to a newer
    version for fear of messing up everything that already works.
    Had a real
    headache getting MySQL 5, PHP 5 and phpMyAdmin all up and
    running with DW 8.
    Fortunately I had David Powers book that gave pretty much
    idiot proof
    instructions on how to install all this stuff. I'd never been
    able to do it
    left to my own devices. Another caveat is that my webhost,
    like most, is
    behind the upgrade curve: they run MySQL 4.1 and phpMyAdmin
    2,8 so if I
    upgrade too much there may be compatibility issues.
    Another oddity, renaming that file from .php to .html
    extension causes it
    to open fine in Firefox and Safari. I don't think it's kosher
    to keep it
    that way since it does contain DW8's login php scripts.
    Again, there's no
    problem with other .php files.

  • How do I setup a php testing server that connects to my web host?

    My web host (webhostingpad.com) has php on it. I need to setup a testing server that connects to this so I can test my site locally.
    My questions are:
    1. Do I set this up as a local network connection or an sftp (same as my remote)?
    2. what information do I put in to make this work?

    1024MB is enough to have 2 instances but You have to know what are going to be the requirements levels of those instances in order to check if your memory is enough.
    The memory is a theme that relate Oracle SGA with RAM in the machine.
    To have a second database server you have to make another installation in a different Oracle Home.
    It is not the same to have 2 instances than 2 Oracle database servers.
    Do you know what is the difference ?
    Joel P�rez

  • Setting up Dreamweaver CS4 with PHP testing server... Live View doesnt work

    Hello,
    Im trying to setup Dreamweaver CS4 with a php website im
    making. Ive setup the site information, and provided a testing site
    (XAMPP), and i can see the fully rendered .php pages in the Live
    View tab. However, say i change some of the text in the .php file
    (say from <p>Hello</p> to <p>Hi</p>) and
    then click in the Live View tab - the page does not update. It
    seems to do something, bit just returns the same.
    How do i set it up so, like with plain .html pages, you can
    make a change to the source code and instantly see the change in
    Live View?
    (At the moment i have to make the change to the source code,
    save it, click Live View to cancel it, and then click Live View
    again).
    Background:
    Ive setup XAMPP (G:\XAMPP\)
    Ive setup vhosts in apache.
    Ive stored my websites in G:\Websites
    Ive set the testing server to G:\Websites\site, where "site"
    is setup as a vhost and correctly displays when entered into a
    browser.
    Ive set the url prefix to
    http://site/
    Ive set local root to G:\Websites\site
    Any help would be greatly appreciated.
    Cheers.

    > How do i set it up so, like with plain .html pages, you
    can make a change
    > to
    > the source code and instantly see the change in Live
    View?
    Did you try using F5 to refresh the page? If that doesn't
    work for you,
    then you'll have to drop and restart Live view. No need to
    save and reload
    the page.
    Murray --- ICQ 71997575
    Adobe Community Expert
    (If you *MUST* email me, don't LAUGH when you do so!)
    ==================
    http://www.projectseven.com/go
    - DW FAQs, Tutorials & Resources
    http://www.dwfaq.com - DW FAQs,
    Tutorials & Resources
    ==================
    "Major_Disaster" <[email protected]> wrote
    in message
    news:gibqir$lgu$[email protected]..
    > Hello,
    >
    > Im trying to setup Dreamweaver CS4 with a php website im
    making. Ive setup
    > the
    > site information, and provided a testing site (XAMPP),
    and i can see the
    > fully
    > rendered .php pages in the Live View tab. However, say i
    change some of
    > the
    > text in the .php file (say from <p>Hello</p>
    to <p>Hi</p>) and then click
    > in
    > the Live View tab - the page does not update. It seems
    to do something,
    > bit
    > just returns the same.
    >
    > How do i set it up so, like with plain .html pages, you
    can make a change
    > to
    > the source code and instantly see the change in Live
    View?
    >
    > (At the moment i have to make the change to the source
    code, save it,
    > click
    > Live View to cancel it, and then click Live View again).
    >
    > Background:
    > Ive setup XAMPP (G:\XAMPP\)
    > Ive setup vhosts in apache.
    > Ive stored my websites in G:\Websites
    > Ive set the testing server to G:\Websites\site, where
    "site" is setup as a
    > vhost and correctly displays when entered into a
    browser.
    > Ive set the url prefix to
    http://site/
    > Ive set local root to G:\Websites\site
    >
    > Any help would be greatly appreciated.
    >
    > Cheers.
    >

  • Troubleshooting when trying to read my PHP test page

    Hi,
    my question could seem very simple but it causes me unfinished problems. I a currently trying to create a website using PHP, but after installation (compatible with Apache 1.3), impossible to read any information (using Safari). In fact, the first problem is that when I tell my browser to go to the test page I created (mycomputer/~myname/test.php) (or even http://127.0.0.1/~myname/test.php) a page comes, saying FORBIDDEN, you don't have permission to access/~myname on this server.
    Why?
    Thanks,
    S.
    PS. If someone could also tell me where to write the modifications I would like to make to Apache, it would be great.
    iBook G3   Mac OS X (10.2.x)  

    Any file or folder you want to access through Apache needs to allow the www user to read it; select the file in the Finder and choose Get Info from the File menu. Under Ownership & Permissions, change the group and other permissions to Read Only.
    (10399)

  • Test fails after php install: "Error executing file"  and "no protocol"

    With version 10.1.3.3.0, after installing the php extension, a simple test file fails with the log message of:
    >>
    Error executing file:/pgmdev/phpApp1/phpProj1/public_html/test1.php
    Reason: no protocol: /pgmdev/test1.php
    <<
    Contents of test1.php:
    <html>
    <head>
    <title>PHP Test: test1.php</title>
    </head>
    <body>
    <?php phpinfo(); ?>
    </body>
    </html>
    Any suggestions?

    Additional info:
    This is on a Fedora 8 box that is running Oracle XE and ZendCore php just fine. Running the test.php page from /var/www/html produces the expected results, so apache is running as it should. The ZendCore control panel functions as well.

  • How do I set up a local testing server?

    Hey again everyone. I am trying to figure out how to set up a local testing server. I've read a couple different tutorials online and i still can't figure it out. I added a new server, named it test server, I'm connecting using local/network, my server folder is C:\Users\Jake\Website\testfolder, and my web URL is http://localhost/. My server model is PHP/MySQL.
    My site's root folder is C:\Users\Jake\Website\. I have also downloaded XXAMP. It downloaded and that was it though, I'm not sure if I need to apply it somehow to Dreamweaver. When I try to preview my pages I get a message that asks me if I want to update copy on testing server. If I choose yes, another message comes up and asks me if I want to put dependent files. Whether I choose yes or no it just says IE cannot display the web page.
    Any help would be appreciated, thanks!

    Site Name: PHP Test Site
    Local Site Folder: C:\xampp\htdocs\php_test\
    Server Name: Local Testing
    Connect Using: Local/Network
    Server Folder: C:\xampp\htdocs\php_test
    Default Images Folder: C:\xampp\htdocs\php_test\Images\
    Web URL: http://localhost/php_test/Server Model: PHP MySQL
    Is that everything you need to know? Note that I do not have a remote testing site set up yet.

  • DW CS5.5 Testing server setup - Help!!

    Hi everyone,
    Sorry if this is in the incorrect place for this error but I an having difficulties running a test server for php testing.
    I am running MacBook Pro, Lion and have Xampp installed. DW CS5.5 Databases access via phpmyadmin works fine.
    Ok so this is what I do:
    1. Create a new site in DW CS5.5
         Under Site Tab:
              Site Name: test
              Local folder: desktop/test
    2. Unser server tab:
              Basic tab
                   Sever name: whatever.
                   Connect with: local/network
                   Server folder: placed in the htdocs/mysite
                        (Note: When creating the new folder in htdocs a pop up states that the folder is read only, so I am hoping its something to do with that)
                   Web URL to http://127.0.0.1/xampp
              Advance tab
                   maintain sync info: Checked
                   automatically upload on save: Checked
                   Testing Server Model: PHP MySQL
              Save
                   Remote: unchecked
                    Testing: checked
              Save
    3. Create new php file and open it, save it, making sure that the cursor is still flashing within the document.
    4. Open the Databases tab
         Click the + and select MySQL Connection
              name: MyConnection
              mySQL server: localhost
              username: root
              password:
         Pressing select gives the following errors:
              HTTP 404 error MMHTTPDB.php does not exist
              Unidentified error
         Attempts:
              renaming Web URL to http://127.0.0.1/xampp/xamppfiles/htdocs/mysite/_mmServerScripts as thats where I found the MMHTPDB.php file. No avail
              changing local folder from desktop/test to htdocs/mysite. No Avail
    Please could someone show me why DW is teasing me
    thanks in advance

    Hi SnakEyez02,
    Thanks for that... I have updated the thread so that it works now
    ANSWER
    1. Create a new site in DW CS5.5
         Under Site Tab:
              Site Name: test
              Local folder: desktop/test
    2. Unser server tab:
              Basic tab
                   Sever name: whatever.
                   Connect with: local/network
                   Server folder: htdocs/xampp/mysite
                   Web URL to http://127.0.0.1/xampp/mysite
              Advance tab
                   maintain sync info: Checked
                   automatically upload on save: Checked
                   Testing Server Model: PHP MySQL
              Save
                   Remote: unchecked
                    Testing: checked
              Save
    3. Create new php file and open it, save it, making sure that the cursor is still flashing within the document.
    4. Open the Databases tab
         Click the + and select MySQL Connection
              name: MyConnection
              mySQL server: localhost
              username: root
              password:
              select database/ table and press OK
    Now at the top of the php doc press "discover"
    THATS IT:)

  • 2.3.11 and 2.4.13 fail tests on OpenSuse 10.3 x86_64

    I am trying to get php and perl API of BDBXML 2.3.11 and 2.4.13 running on OpenSuse 10.3 x86_64
    when using --enable-perl the perl tests fail so i tried to run the test suite and compare it against 32bit builds.
    2.3.11
    after changing dbxml/dist/configure.ac like this:
    367c367
    <       LIBTSO_MODSUFFIX=@MODSUFFIX@
    LIBTSO_MODSUFFIX=$MODSUFFIX'make test' in dbxml/build_unix produces a ALL.OUT
    using:
    grep "^FAIL" -A 1 -B 1 dbxml-2.3.11/dbxml/build_unix/ALL.OUTstill produces lots of output. Since the 32bit version is working I compared the output produced on a 32bit ubuntu 07.10 with 64bit OpenSuse 10.3 which showed that following errors only occured on the 64bit system:
                            Xml003.3.1c: Put/get on both DB's
    FAIL:10:16:44 (00:00:00) dbxml_dump/dbxml_load(3.3.1.dbxml:unexpected hexadecimal value ' '
    load 3.3.1.dbxml-dumpload: Error: Invalid argument): expected 0, got 1
    FAIL:10:16:44 (00:00:00) Dump/load of 3.3.1.dbxml failed.
            8.8: Query timeout
    FAIL: should not have gotten here
    FAIL:10:17:04 (00:00:00) 8.8.8 returned error value 1
    FAIL:10:17:04 (00:00:00) 8.8.8: expected "1", got "0"
            8.8: Container not found
                    12.4.1: update with duplicate index entries
    FAIL:10:21:41 (00:00:00) dbxml_dump/dbxml_load(12.4.1.dbxml:unexpected hexadecimal value ' '
    load 12.4.1.dbxml-dumpload: Error: Invalid argument): expected 0, got 1
    FAIL:10:21:41 (00:00:00) Dump/load of 12.4.1.dbxml failed.there are more errors but they are not unique to the 64bit system. The shown messages repeat for different test settings(wholedoc/node - storage ...)
    the errors occurring in 3.3.1c and 12.4.1 can also be reproduced using dbxml,dbxml_dump and dbxml_load:
    ./dbxml -h /tmp
    dbxml>createcon test.dbxml
    dbxml>putdoc phone1 '<phone/>'
    dbxml>quit
    ./dbxml_dump -h /tmp/ -f /tmp/dbxml_2.3.11_test.dbxml.dump test.dbxml
    ./dbxml_load -h /tmp/ -f /tmp/dbxml_2.3.11_test.dbxml.dump test2.dbxml
    2.4.13
    The documentation states that the test should be run from within the tclsh, but I think make test should be supported too. (make test only works after adapting pathes to new location in dbxml/test/tcl/)
    similar procedure as above shows that the bug responsible for failing 3.3.1c and 12.4.1 is fixed
    and 8.8.8 still fails.
    Having a look at 8.8.8 my assumption is that the test fails simply because the machine is too fast (2.13Ghz Core2Duo) and executes the test query before the set timeout is triggered.
    Now back to perl:
    2.3.11 tests fail with:
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/XmlManager.t
    t/XmlManager....ok 43/89BDB XML: unexpected hexadecimal value ' '           
    failed
    Error: Invalid argument in t/XmlManager.t, line 350
    # Looks like you planned 89 tests but only ran 51.
    t/XmlManager....dubious                                                     
            Test returned status 255 (wstat 65280, 0xff00)
    DIED. FAILED tests 52-89
            Failed 38/89 tests, 57.30% okay
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t  255 65280    89   76  85.39%  52-89
    Failed 1/1 test scripts, 0.00% okay. 38/89 subtests failed, 57.30% okay.after wrapping the call to loadContainer in test 51 in eval {} catch{}
    the output looks like this (no further failures)
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/XmlManager.t
    t/XmlManager....ok 1/89BDB XML: unexpected hexadecimal value ' '            
    failed with std exception:Error: Invalid argument in t/XmlManager.t, line 350
    #   Failed test 'dump and load failed'
    #   in t/XmlManager.t at line 363.
    t/XmlManager....ok 53/89# Looks like you failed 1 test of 89.               
    t/XmlManager....dubious                                                     
            Test returned status 1 (wstat 256, 0x100)
    DIED. FAILED test 52
            Failed 1/89 tests, 98.88% okay
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t    1   256    89    1   1.12%  52
    Failed 1/1 test scripts, 0.00% okay. 1/89 subtests failed, 98.88% okay.luckily this is the only test that fails:
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t    1   256    89    1   1.12%  522.4.13 tests fail with:
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
    Failed Test Stat Wstat Total Fail Failed List of Failed
    t/XmlManager.t 1 256 89 1 1.12% 43
    t/XmlQueryContext.t 255 65280 33 62 187.88% 3-33
    t/XmlValue.t 1 256 248 1 0.40% 245
    looking at XmlManager test shows that it is not the same as above but something else
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/XmlManager.t
    t/XmlManager....ok 32/89                                                    
    #   Failed test 'getIndexNodes'
    #   in t/XmlManager.t at line 275.
    t/XmlManager....ok 52/89# Looks like you failed 1 test of 89.               
    t/XmlManager....dubious                                                     
            Test returned status 1 (wstat 256, 0x100)
    DIED. FAILED test 43
            Failed 1/89 tests, 98.88% okay
    Failed Test    Stat Wstat Total Fail  Failed  List of Failed
    t/XmlManager.t    1   256    89    1   1.12%  43
    Failed 1/1 test scripts, 0.00% okay. 1/89 subtests failed, 98.88% okay.The other two tests seem to fail because the tests are not correct, but i haven't had the time to look at them yet. Here is the output:
    t/XmlQueryContext..........ok 1/33Bareword "XmlQueryContext::DeadValues" not allowed while "strict subs" in use at t/XmlQueryContext.t line 194, <DATA> line 225.
    Bareword "XmlQueryContext::DeadValues" not allowed while "strict subs" in use at t/XmlQueryContext.t line 195, <DATA> line 225.
    Execution of t/XmlQueryContext.t aborted due to compilation errors.
    # Looks like you planned 33 tests but only ran 2.
    # Looks like your test died just after 2.
    t/XmlQueryContext..........dubious                                          
            Test returned status 255 (wstat 65280, 0xff00)
    DIED. FAILED tests 3-33
            Failed 31/33 tests, 6.06% okay
    t/XmlValue.................ok 1/248                                         
    #   Failed test 'getLocalName'
    #   in t/XmlValue.t at line 410.
    #          got: ''
    #     expected: '#document'
    t/XmlValue.................NOK 245# Looks like you failed 1 test of 248.    
    t/XmlValue.................dubious                                          
            Test returned status 1 (wstat 256, 0x100)
    DIED. FAILED test 245
            Failed 1/248 tests, 99.60% okaySo my questions are:
    1. can and will the fix for dump/load be back ported to 2.3.11
    2. is my assumption about 8.8.8 correct
    3. is there a patch underway for perl on 2.4.13?
    4. were there other issues in 2.3.11 that have been fixed in 2.4.13 but not back ported. especially regarding perl and php APIs on 64bit platforms.
    I noticed that at least the patch provided in: PHP / BDB XML works fine on Red Hat Fedora 5, not on SuSE 10.2/Athlon 64 by djimenez was not incorporated into 2.3.11 (2.4.13 seems to be fixed)
    5. since there seems to be no publicly available php test suite yet, will there be one in the near future?
    all comments welcome,
    thanks
    Gordon

    for anyone interested this is a patch for 2.3.11 that backports 64bit php fixes from 2.4.13. It also contains some other changes:
    -additional php possibly wrong usage of long instead of int on 64 bit in db-4.5.20
    -perl see: Re: perl script segfaults on putDocument
    -dbxml tcl test: configure.ac LIBTSO_MODSUFFIX and setting the default tcl test to "run_all" instead of "run_xml"
    Please note: The code looks a bit strange because the [ i ] access into an array is interpreted by the forum software and converted to &lt;i&gt;. So you cannot directly copy the patch from browser but need to copy the raw html and modify it (e.g. pass it through sed).
    you'll need the &lt;pre&gt; &lt;/pre&gt; part from this post and exchange &lt;i&gt; for [ i ] (without spaces) and &lt;br&gt; for '\n'. Maybe it will work. :-)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/db-4.5.20/php_db4/db4.cpp dbxml-2.3.11-64/db-4.5.20/php_db4/db4.cpp
    --- dbxml-2.3.11.orig/db-4.5.20/php_db4/db4.cpp     2006-09-16 03:20:58.000000000 +0200
    +++ dbxml-2.3.11-64/db-4.5.20/php_db4/db4.cpp     2008-05-30 18:35:43.000000000 +0200
    @@ -1203,7 +1203,7 @@
         DB_TXN *dbtxn = NULL;
         zval *dbtxn_obj = NULL;
         char file = NULL, database = NULL;
    -    long filelen = 0, databaselen = 0;
    +    int filelen = 0, databaselen = 0;
         DBTYPE type = DB_BTREE;
         u_int32_t flags = DB_CREATE;
         int mode = 0;
    @@ -2015,7 +2015,7 @@
         DbEnv *dbe;
         zval *self;
         char *home;
    -    long homelen;
    +    int homelen;
         u_int32_t flags = 0;
         self = getThis();
         getDbEnvFromThis(dbenv);
    @@ -2035,7 +2035,7 @@
         DB_ENV *dbenv;
         zval *self;
         char *dir;
    -    long dirlen;
    +    int dirlen;
         self = getThis();
         getDbEnvFromThis(dbenv);
         if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &dir, &dirlen) == FAILURE)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/dist/configure.ac dbxml-2.3.11-64/dbxml/dist/configure.ac
    --- dbxml-2.3.11.orig/dbxml/dist/configure.ac     2007-01-19 16:52:44.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/dist/configure.ac     2008-06-02 18:30:41.000000000 +0200
    @@ -364,7 +364,7 @@
         LIBJSO_LN_INSTALL="test -f \$(libjso_base)-\$(SOVERSION).dylib && \$(ln) -f -s \$(libjso_base)-\$(SOVERSION).dylib \$(libjso_base)-\$(SOVERSION).jnilib";;
         LIBTSO_MODULE="-module"
    -     LIBTSO_MODSUFFIX=@MODSUFFIX@
    +     LIBTSO_MODSUFFIX=$MODSUFFIX
         LIBJSO_LN_BUILD=""
         LIBJSO_LN_INSTALL="";;
    esac
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/dbxml/db_rdbt.c dbxml-2.3.11-64/dbxml/src/dbxml/db_rdbt.c
    --- dbxml-2.3.11.orig/dbxml/src/dbxml/db_rdbt.c     2008-04-16 17:46:53.000000000 +0200
    +++ dbxml-2.3.11-64/dbxml/src/dbxml/db_rdbt.c     2008-06-04 18:01:55.000000000 +0200
    @@ -206,7 +206,7 @@
                        break;
                   buf[linelen++] = '\0';
              } else
    -               linelen = strlen(buf) + 1;
    +               linelen = (int) strlen(buf) + 1;
              start += linelen;
              if (name != NULL) {
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/dbxml/DbWrapper.cpp dbxml-2.3.11-64/dbxml/src/dbxml/DbWrapper.cpp
    --- dbxml-2.3.11.orig/dbxml/src/dbxml/DbWrapper.cpp     2008-04-16 17:46:53.000000000 +0200
    +++ dbxml-2.3.11-64/dbxml/src/dbxml/DbWrapper.cpp     2008-06-04 20:33:18.000000000 +0200
    @@ -219,7 +219,7 @@
         int version, ret, t_ret;
         DBTYPE dbtype;
         char *subdb;
    -     u_int32_t read_flags;
    +     u_int32_t read_flags, tflags;
         Dbt key, data;
         db_recno_t recno, datarecno;
         DB_ENV *dbenv = environment_ ? environment_->get_DB_ENV() : 0;
    @@ -252,11 +252,14 @@
              db_.err(ENOMEM, NULL);
              goto err;
    +     
    +     // work around gcc optimizer issue that seems to modify
    +     // read_flags (4.1.1 on 64-bit linux)
    +     tflags = read_flags;
         /* Get each key/data pair and add them to the database. */
         for (recno = 1;; ++recno) {
              if ((ret = __db_rdbt(dbenv, key.get_DBT(), data.get_DBT(),
    -                         read_flags, read_callback, in, lineno)) != 0) {
    +                         tflags, read_callback, in, lineno)) != 0) {
                   if (ret == EOF)
                        ret = 0;
                   break;
    @@ -267,7 +270,7 @@
                   break;
              case DB_KEYEXIST:
                   db_.errx("line %d: key already exists, not loaded:", *lineno);
    -               dbenv->prdbt(key.get_DBT(), read_flags & DB_READ_PRINTABLE,
    +               dbenv->prdbt(key.get_DBT(), tflags & DB_READ_PRINTABLE,
                             0, &std::cerr, pr_callback, 0);
                   break;
              default:
    @@ -602,9 +605,9 @@
         // but if incrementing the last byte results in a carry
         // (value overflows and goes back to zero), then we have
         // to increment the last-but-one byte - and so on.
    -     char maxPtr = (char )dbt.get_data();
    +     unsigned char maxPtr = (unsigned char )dbt.get_data();
         u_int32_t maxSize = dbt.get_size();
    -     char *pos = maxPtr + maxSize;
    +     unsigned char *pos = maxPtr + maxSize;
         for(--pos; pos >= maxPtr; --pos) {
              ++(*pos);
              if(*pos != 0) break;
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/perl/DbXml/DbXml.xs dbxml-2.3.11-64/dbxml/src/perl/DbXml/DbXml.xs
    --- dbxml-2.3.11.orig/dbxml/src/perl/DbXml/DbXml.xs     2006-11-22 23:56:13.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/perl/DbXml/DbXml.xs     2008-06-06 17:35:46.000000000 +0200
    @@ -1313,20 +1313,20 @@
             else if (sv_derived_from(contents, "XmlInputStream"))
                 XmlInputStream *s = GetObjPointer(contents, XmlInputStream);
    +            ClearObjPointer(contents);
                 if (txn)
                     RETVAL = THIS->putDocument(*txn, name, s, *context, flags);
                 else
                     RETVAL = THIS->putDocument(name, s, *context, flags);
    -            ClearObjPointer(contents);
             else if (sv_derived_from(contents, "XmlEventReader"))
                 XmlEventReader *s = GetObjPointer(contents, XmlEventReader);
    +            ClearObjPointer(contents);
                 if (txn)
                     RETVAL = THIS->putDocument(*txn, name, s, context, flags);
                 else
                     RETVAL = THIS->putDocument(name, s, context, flags);
    -            ClearObjPointer(contents);
             else
                 croak("putDocument parameter 2 should be an XmlInputStream, XmlEventReader or a string");
    @@ -1560,7 +1560,7 @@
         INIT:
             MY_TRY
         CLEANUP:
    -        ClearObjPointer(ST(1));
    +         ClearObjPointer(ST(1));
             MY_CATCH
    string
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/perl/DbXml/t/XmlManager.t dbxml-2.3.11-64/dbxml/src/perl/DbXml/t/XmlManager.t
    --- dbxml-2.3.11.orig/dbxml/src/perl/DbXml/t/XmlManager.t     2006-11-22 17:02:31.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/perl/DbXml/t/XmlManager.t     2008-06-06 17:31:39.000000000 +0200
    @@ -346,14 +346,28 @@
         ok -e "$tmp_dir/cont", "dumped content exists";
         my $new_container_name = "$tmp_dir/new";
    +    eval {
         $mgr->loadContainer($new_container_name, "$tmp_dir/cont");
    +   
         my $c1 = $mgr->openContainer($new_container_name);
         my $doc = $c1->getDocument('x') ;
    +
         my $cont = $doc->getContent();
    +
         is $cont, $content, "getContent ok" ;
    +    };
    +    if (my $e = catch std::exception)
    +    {
    +      warn "failed with std exception:" . $e->what() . "\n";
    +      ok 0, "dump and load failed with std::exception"
    +    }
    +    elsif ($@)
    +    {
    +      warn "failed\n";
    +      warn $@ . "\n";
    +      ok 0, "dump and load failed"
    +    }
         unlink "$tmp_dir/cont";
    if (my $e = catch std::exception)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_container.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_container.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_container.cpp     2006-10-30 18:46:02.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_container.cpp     2008-06-04 13:35:09.000000000 +0200
    @@ -36,7 +36,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       std::string buffer = This.getName();
    -  RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    +  DBXML_RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    PHP_DBXML_METHOD_END()
    @@ -97,7 +97,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  int urilen, namelen, indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -125,7 +125,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  int urilen, namelen, indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -153,7 +153,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  int urilen, namelen, indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -180,8 +180,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
    -  char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  char *index;
    +  int indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O",
           &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -208,8 +208,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
    -  char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  char *index;
    +  int indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O",
           &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -236,8 +236,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval zctx = NULL, ztxn = NULL;
    -  char uri, name, *index;
    -  long urilen, namelen, indexlen;
    +  char *index;
    +  int indexlen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O",
           &index, &indexlen,
           &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -270,7 +270,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval *ztxn = NULL;
       char *name;
    -  long namelen;
    +  int namelen;
       long flags = 0;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
           &name, &namelen, &flags)) {
    @@ -299,7 +299,7 @@
         PHP_DBXML_STUFFED_THIS(XmlContainer);
         zval *ztxn = NULL;
         char *handle;
    -     long handleLen;
    +     int handleLen;
         long flags = 0;
         if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
                                    &handle, &handleLen, &flags)) {
    @@ -325,7 +325,8 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, zstream = NULL, zctx = NULL;
       char name, contents;
    -  long namelen, contentslen, flags = 0;
    +  int namelen, contentslen;
    +  long flags = 0;
       /* XmlDocument */
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|Ol",
         &zdoc, php_dbxml_XmlDocument_ce,
    @@ -389,8 +390,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, zstream = NULL, zctx = NULL;
    -  char name, contents;
    -  long namelen, contentslen, flags = 0;
    +  long flags = 0;
       /* XmlDocument */
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|Ol",
         &zdoc, php_dbxml_XmlDocument_ce,
    @@ -421,7 +421,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, *zctx = NULL;
       char *name;
    -  long namelen, contentslen;
    +  int namelen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|O",
         &zdoc, php_dbxml_XmlDocument_ce,
         &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -462,8 +462,6 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zdoc = NULL, *zctx = NULL;
    -  char *name;
    -  long namelen, contentslen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O|O",
         &zdoc, php_dbxml_XmlDocument_ce,
         &zctx, php_dbxml_XmlUpdateContext_ce)) {
    @@ -489,9 +487,9 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zctx = NULL, *zvl = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    -  char puri, pname, *pindex;
    -  long purilen, pnamelen, pindexlen;
    +  int urilen, namelen, indexlen;
    +  char puri, pname;
    +  int purilen, pnamelen;
       long flags = 0;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Osss|Ol",
           &zctx, php_dbxml_XmlQueryContext_ce,
    @@ -582,9 +580,9 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       zval ztxn = NULL, zctx = NULL, *zvl = NULL;
       char uri, name, *index;
    -  long urilen, namelen, indexlen;
    -  char puri, pname, *pindex;
    -  long purilen, pnamelen, pindexlen;
    +  int urilen, namelen, indexlen;
    +  char puri, pname;
    +  int purilen, pnamelen;
       if(SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "sss|O",
           &uri, &urilen, &name, &namelen, &index, &indexlen,
           &zvl, php_dbxml_XmlValue_ce))
    @@ -660,7 +658,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       char *name;
    -  long namelen;
    +  int namelen;
       if(FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
         return;
    @@ -672,7 +670,7 @@
       PHP_DBXML_STUFFED_THIS(XmlContainer);
       char *name;
    -  long namelen;
    +  int namelen;
       if(FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
         return;
    @@ -712,9 +710,9 @@
       if(ztxn) {
         XmlTransaction txn = php_dbxml_get_XmlTransaction_object_pointer(ztxn TSRMLS_CC);
    -    RETURN_LONG(This.getNumDocuments(txn));
    +    DBXML_RETURN_LONG(This.getNumDocuments(txn));
       } else {
    -    RETURN_LONG(This.getNumDocuments());
    +    DBXML_RETURN_LONG(This.getNumDocuments());
    PHP_DBXML_METHOD_END()
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.cpp     2006-11-22 17:45:05.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml.cpp     2008-06-04 14:52:22.000000000 +0200
    @@ -50,7 +50,7 @@
         return;
    -  RETVAL_STRING((char*)dbxml_version(&M, &m, &p), 1);
    +  RETVAL_STRING((char*)dbxml_version(&M, &m, &p), (int)1);
       if (ZEND_NUM_ARGS()) {
         convert_to_long(maj);
    @@ -70,7 +70,7 @@
         return;
    -  DbXml::setLogLevel((DbXml::LogLevel)level, on);
    +  DbXml::setLogLevel((DbXml::LogLevel)level, (on != 0));
    static PHP_FUNCTION(dbxml_set_log_category)
    @@ -81,7 +81,7 @@
         return;
    -  DbXml::setLogCategory((DbXml::LogCategory)level, on);
    +  DbXml::setLogCategory((DbXml::LogCategory)level, (on != 0));
    function_entry dbxml_functions[] = {
    @@ -96,7 +96,7 @@
       zend_class_entry ce;
    #ifdef PHP_DBXML_EXCEPTIONS
    -  php_dbxml_init_exceptions();
    +  php_dbxml_init_exceptions(TSRMLS_C);
    #endif
       PHP_DBXML_REGISTER_CLASS(XmlData, php_dbxml_XmlData_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlValue, php_dbxml_XmlValue_dtor);
    @@ -108,6 +108,7 @@
       PHP_DBXML_REGISTER_CLASS(XmlEventReader, php_dbxml_XmlEventReader_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlEventReaderToWriter, php_dbxml_XmlEventReaderToWriter_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlEventWriter, php_dbxml_XmlEventWriter_dtor);
    +  PHP_DBXML_REGISTER_CLASS(XmlIndexLookup, php_dbxml_XmlIndexLookup_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlIndexSpecification, php_dbxml_XmlIndexSpecification_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlModify, php_dbxml_XmlModify_dtor);
       PHP_DBXML_REGISTER_CLASS(XmlQueryContext, php_dbxml_XmlQueryContext_dtor);
    @@ -141,9 +142,14 @@
       REGISTER_LONG_CONSTANT( "DBXML_ENCRYPT", DBXML_ENCRYPT, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_GEN_NAME", DBXML_GEN_NAME, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_LAZY_DOCS", DBXML_LAZY_DOCS, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_DOCUMENT_PROJECTION", DBXML_DOCUMENT_PROJECTION, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_NO_AUTO_COMMIT", DBXML_NO_AUTO_COMMIT, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_CACHE_DOCUMENTS", DBXML_CACHE_DOCUMENTS, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_NO_INDEX_NODES", DBXML_NO_INDEX_NODES, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "DBXML_INDEX_NODES", DBXML_INDEX_NODES, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_NO_STATISTICS", DBXML_NO_STATISTICS, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT( "DBXML_STATISTICS", DBXML_STATISTICS, CONST_CS | CONST_PERSISTENT);
    +  REGISTER_LONG_CONSTANT( "DBXML_WELL_FORMED_ONLY", DBXML_WELL_FORMED_ONLY, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "LEVEL_NONE", LEVEL_NONE, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "LEVEL_DEBUG", LEVEL_DEBUG, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT( "LEVEL_INFO", LEVEL_INFO, CONST_CS | CONST_PERSISTENT);
    @@ -237,6 +243,8 @@
       REGISTER_LONG_CONSTANT("XmlException_NULL_POINTER", XmlException::NULL_POINTER, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_INDEXER_PARSER_ERROR", XmlException::INDEXER_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_DATABASE_ERROR", XmlException::DATABASE_ERROR, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT("XmlException_QUERY_PARSER_ERROR", XmlException::QUERY_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
    +  //REGISTER_LONG_CONSTANT("XmlException_QUERY_EVALUATION_ERROR", XmlException::QUERY_EVALUATION_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_XPATH_PARSER_ERROR", XmlException::XPATH_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_DOM_PARSER_ERROR", XmlException::DOM_PARSER_ERROR, CONST_CS | CONST_PERSISTENT);
       REGISTER_LONG_CONSTANT("XmlException_XPATH_EVALUATION_ERROR", XmlException::XPATH_EVALUATION_ERROR, CONST_CS | CONST_PERSISTENT);
    @@ -302,6 +310,9 @@
    #if COMPILE_DL_DBXML
    +#ifdef PHP_WIN32
    +#include "zend_arg_defs.c"
    +#endif
    BEGIN_EXTERN_C()
    ZEND_GET_MODULE(dbxml)
    END_EXTERN_C()
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_data.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_data.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_data.cpp     2006-10-30 18:46:02.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_data.cpp     2008-06-04 14:58:27.000000000 +0200
    @@ -39,7 +39,7 @@
         WRONG_PARAM_COUNT;
    -  RETURN_STRINGL((char*)This.get_data(), This.get_size(), 1);
    +  DBXML_RETURN_STRINGL((char*)This.get_data(), This.get_size(), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlData, set_data)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_document.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_document.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_document.cpp     2006-10-30 18:46:02.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_document.cpp     2008-06-04 15:00:30.000000000 +0200
    @@ -32,24 +32,6 @@
       RETURN_BOOL(This == other);
    } PHP_DBXML_METHOD_END()
    -PHP_DBXML_METHOD_BEGIN(XmlDocument, getName)
    -  PHP_DBXML_STUFFED_THIS(XmlDocument);
    -  std::string buffer = This.getName();
    -  RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    -} PHP_DBXML_METHOD_END()
    -PHP_DBXML_METHOD_BEGIN(XmlDocument, setName)
    -  PHP_DBXML_STUFFED_THIS(XmlDocument);
    -  char *name;
    -  long namelen;
    -  if(FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
    -    return;
    -  This.setName(std::string(name, namelen));
    -} PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlDocument, getContent)
       PHP_DBXML_STUFFED_THIS(XmlDocument);
    @@ -62,7 +44,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       std::string buffer;
       This.getContent(buffer);
    -  RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    +  DBXML_RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlDocument, getContentAsEventReader)
    @@ -77,7 +59,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval *zv = NULL;
       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &zv, php_dbxml_XmlEventWriter_ce)) {
    -    XmlEventWriter &writer = php_dbxml_get_XmlEventWriter_object_pointer(zv TSRMLS_DC);
    +    XmlEventWriter &writer = php_dbxml_get_XmlEventWriter_object_ref(zv TSRMLS_CC);
         This.getContentAsEventWriter(writer);
    } PHP_DBXML_METHOD_END()
    @@ -87,7 +69,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval zstr = NULL, zdat = NULL;
       char *content;
    -  long contentlen;
    +  int contentlen;
       if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &content, &contentlen)) {
         This.setContent(std::string(content, contentlen));
    @@ -100,7 +82,7 @@
         This.setContentAsXmlInputStream(str);
       else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &zstr, php_dbxml_XmlEventReader_ce)) {
    -    XmlEventReader &reader = php_dbxml_get_XmlEventReader_object_pointer(zstr TSRMLS_DC);
    +    XmlEventReader &reader = php_dbxml_get_XmlEventReader_object_ref(zstr TSRMLS_CC);
         This.setContentAsEventReader(reader);
       else {
    @@ -123,7 +105,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval zvl = NULL, zdat = NULL;
       char uri, name;
    -  long urilen, namelen;
    +  int urilen, namelen;
       if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss",
           &uri, &urilen, &name, &namelen)) {
         XmlValue vl;
    @@ -140,7 +122,7 @@
       PHP_DBXML_STUFFED_THIS(XmlDocument);
       zval zvl = NULL, zdat = NULL;
       char uri, name;
    -  long urilen, namelen;
    +  int urilen, namelen;
       if(SUCCESS == zend_parse_parameters(
              ZEND_NUM_ARGS() TSRMLS_CC, "ssO",
              &uri, &urilen, &name, &namelen,&zvl, php_dbxml_XmlValue_ce)) {
    @@ -150,11 +132,11 @@
    } PHP_DBXML_METHOD_END()
    +PHP_DBXML_STRING_GETTER_AND_SETTER(XmlDocument, Name);
    +
    function_entry php_dbxml_XmlDocument_methods[] = {
    PHP_ME(XmlDocument, XmlDocument, NULL, 0)
    -PHP_ME(XmlDocument, getName, NULL, 0)
    PHP_ME(XmlDocument, equals, NULL, 0)
    -PHP_ME(XmlDocument, setName, NULL, 0)
    PHP_ME(XmlDocument, getContent, NULL, 0)
    PHP_ME(XmlDocument, getContentAsString, NULL, 0)
    PHP_ME(XmlDocument, getContentAsEventReader, NULL, 0)
    @@ -163,6 +145,7 @@
    PHP_ME(XmlDocument, fetchAllData, NULL, 0)
    PHP_ME(XmlDocument, getMetaData, NULL, 0)
    PHP_ME(XmlDocument, setMetaData, NULL, 0)
    +PHP_DBXML_ME_GETTER_AND_SETTER(XmlDocument, Name)
    {NULL, NULL, NULL}
    /*  vim: set sts=2 ts=2 expandtab ai bs=2 : */
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreader.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreader.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreader.cpp     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreader.cpp     2008-06-04 15:01:44.000000000 +0200
    @@ -59,15 +59,15 @@
         PHP_DBXML_STUFFED_REF(XmlEventReader);
         int len;
         const unsigned char *val = This.getValue(len);
    -     RETURN_STRINGL((char *)val, len, 1);
    +     DBXML_RETURN_STRINGL((char *)val, len, 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getValueLen)
         PHP_DBXML_STUFFED_REF(XmlEventReader);
    -     int len;
    +        int len;
         (void) This.getValue(len);
    -     RETURN_LONG(len);
    +     DBXML_RETURN_LONG(len);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, isAttributeSpecified)
    @@ -86,7 +86,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributeLocalName(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributeLocalName(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getAttributeNamespaceURI)
    @@ -96,7 +96,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributeNamespaceURI(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributeNamespaceURI(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getAttributePrefix)
    @@ -106,7 +106,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributePrefix(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributePrefix(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, getAttributeValue)
    @@ -116,7 +116,7 @@
         if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index)) {
              RETURN_FALSE;
    -     RETURN_STRING((char *)This.getAttributeValue(index), 1);
    +     DBXML_RETURN_STRING((char *)This.getAttributeValue(index), 1);
    } PHP_DBXML_METHOD_END()
    PHP_DBXML_METHOD_BEGIN(XmlEventReader, needsEntityEscape)
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreadertowriter.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreadertowriter.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventreadertowriter.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventreadertowriter.cpp     2008-06-03 18:02:40.000000000 +0200
    @@ -24,9 +24,9 @@
                  &wval, php_dbxml_XmlEventWriter_ce,
                  &ownsReader)) {
              XmlEventReader &reader =
    -               php_dbxml_get_XmlEventReader_object_pointer(rval TSRMLS_DC);
    +               php_dbxml_get_XmlEventReader_object_ref(rval TSRMLS_CC);
              XmlEventWriter &writer =
    -               php_dbxml_get_XmlEventWriter_object_pointer(wval TSRMLS_DC);
    +               php_dbxml_get_XmlEventWriter_object_ref(wval TSRMLS_CC);
              XmlEventReaderToWriter r2w(reader, writer, ownsReader);
              php_dbxml_set_XmlEventReaderToWriter_object_factory(
                   getThis(), r2w TSRMLS_CC);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventwriter.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventwriter.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_eventwriter.cpp     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_eventwriter.cpp     2008-06-03 18:06:06.000000000 +0200
    @@ -29,7 +29,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char lname, prefix, uri, value;
    -     long lLen, pLen, uLen, vLen;
    +     int lLen, pLen, uLen, vLen;
         bool specified = true; // optional in PHP interface
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssss|b",
    @@ -46,10 +46,10 @@
    PHP_DBXML_METHOD_BEGIN(XmlEventWriter, writeText)
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
    -     long type;
    +     int type;
         char *text;
    -     long unused; // length is ignored if passed to PHP's writeText
    -     long tLen;
    +     int unused; // length is ignored if passed to PHP's writeText
    +     int tLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls|l", &type,
                          &text, &tLen, &unused))
    @@ -61,7 +61,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char target, data;
    -     long tLen, dLen;
    +     int tLen, dLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &target,
                          &tLen, &data, &dLen))
    @@ -73,7 +73,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char lname, prefix, *uri;
    -     long lLen, pLen, uLen, nattrs;
    +     int lLen, pLen, uLen, nattrs;
         bool empty = false; // default in PHP
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sssl|b",
    @@ -90,7 +90,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char lname, prefix, *uri;
    -     long lLen, pLen, uLen;
    +     int lLen, pLen, uLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
                          &lname, &lLen, &prefix, &pLen, &uri, &uLen)) {
    @@ -104,8 +104,8 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char *text;
    -     long unused; // length is ignored if passed
    -     long tLen;
    +     int unused; // length is ignored if passed
    +     int tLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
                          &text, &tLen, &unused))
    @@ -119,7 +119,7 @@
         char *version = 0;
         char *encoding = 0;
         char *standalone = 0;
    -     long vLen, eLen, sLen;
    +     int vLen, eLen, sLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sss",
                          &version, &vLen, &encoding, &eLen,
    @@ -140,7 +140,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char *name;
    -     long tLen;
    +     int tLen;
         bool expandedInfoFollows = true; // default this
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b",
    @@ -153,7 +153,7 @@
         PHP_DBXML_STUFFED_REF(XmlEventWriter);
         char *name;
    -     long tLen;
    +     int tLen;
         if (SUCCESS ==
             zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
                          &name, &tLen))
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_exception.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_exception.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_exception.cpp     2006-11-15 18:21:45.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_exception.cpp     2008-06-04 15:03:30.000000000 +0200
    @@ -19,10 +19,14 @@
    PHP_DBXML_DECLARE_CLASS(XmlException);
    -void php_dbxml_init_exceptions()
    +void php_dbxml_init_exceptions(TSRMLS_D)
         zend_class_entry ce;
    +#if (PHP_MAJOR_VERSION == 5) && (PHP_MINOR_VERSION < 2)
         PHP_DBXML_REGISTER_CLASS_WITH_PARENT(XmlException, zend_exception_get_default(), php_dbxml_XmlException_dtor);
    +#else
    +     PHP_DBXML_REGISTER_CLASS_WITH_PARENT(XmlException, zend_exception_get_default(TSRMLS_C), php_dbxml_XmlException_dtor);
    +#endif
         zend_declare_property_long(php_dbxml_XmlException_ce, "code",
                           sizeof("code")-1, 0,
                           ZEND_ACC_PROTECTED TSRMLS_CC);
    @@ -43,7 +47,7 @@
                           ZEND_ACC_PROTECTED TSRMLS_CC);
    -void php_dbxml_throw_exception(const XmlException &xe)
    +void php_dbxml_throw_exception(const XmlException &xe TSRMLS_DC)
         zval *xml_ex;
         MAKE_STD_ZVAL(xml_ex);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.h dbxml-2.3.11-64/dbxml/src/php/php_dbxml.h
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml.h     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml.h     2008-06-04 15:04:22.000000000 +0200
    @@ -20,7 +20,6 @@
    #ifndef PHP_DBXML_H
    #define PHP_DBXML_H
    extern zend_module_entry dbxml_module_entry;
    #define phpext_dbxml_ptr &dbxml_module_entry
    @@ -39,9 +38,7 @@
    #endif
    #ifdef PHP_DBXML_EXCEPTIONS
    -extern "C" {
    #include "zend_exceptions.h"
    #endif
    PHP_MINIT_FUNCTION(dbxml);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexlookup.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexlookup.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexlookup.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexlookup.cpp     2008-06-04 15:08:05.000000000 +0200
    @@ -34,7 +34,7 @@
       index = This.getIndex();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -65,7 +65,7 @@
       index = This.getNodeURI();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -81,7 +81,7 @@
       index = This.getNodeName();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -112,7 +112,7 @@
       index = This.getParentURI();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -143,7 +143,7 @@
       index = This.getParentName();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -183,7 +183,7 @@
       zval *zv;
       long op;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    -  if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
    +  if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
         WRONG_PARAM_COUNT;
    @@ -228,7 +228,7 @@
       zval *zv;
       long op;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    -  if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
    +  if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "Ol", &zv, php_dbxml_XmlValue_ce, &op))
         WRONG_PARAM_COUNT;
    @@ -257,9 +257,8 @@
    PHP_DBXML_METHOD_BEGIN(XmlIndexLookup, setContainer)
       zval *zv;
    -  long op;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    -  if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O", &zv, php_dbxml_XmlContainer_ce))
    +  if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "O", &zv, php_dbxml_XmlContainer_ce))
         WRONG_PARAM_COUNT;
    @@ -276,19 +275,22 @@
       long flags = 0;
       PHP_DBXML_STUFFED_THIS(XmlIndexLookup);
    +#define SET_PTR(expr)  \
    +  XmlQueryContext c = php_dbxml_get_XmlQueryContext_object_pointer(zqc TSRMLS_CC); \
    +  XmlResults r = expr; \
    +  object_init_ex(return_value, php_dbxml_XmlResults_ce); \
    +  php_dbxml_set_XmlResults_object_pointer(return_value, r TSRMLS_CC);
    +
       if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
           "O|l", &zqc, php_dbxml_XmlQueryContext_ce, &flags)) {
    -    XmlQueryContext c = php_dbxml_get_XmlQueryContext_object_pointer(zqc TSRMLS_CC);
    -    XmlResults r = This.execute(c, flags);
    +    SET_PTR(This.execute(c, flags));
         php_dbxml_set_XmlResults_object_pointer(return_value, r TSRMLS_CC);
       } else if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC,
           "OO", &zt, php_dbxml_XmlTransaction_ce, &zqc, php_dbxml_XmlQueryContext_ce, &flags)) {
         XmlTransaction t = php_dbxml_get_XmlTransaction_object_pointer(zt TSRMLS_CC);
    -    XmlQueryContext c = php_dbxml_get_XmlQueryContext_object_pointer(zqc TSRMLS_CC);
    -    XmlResults r = This.execute(t,c,flags);
    -    php_dbxml_set_XmlResults_object_pointer(return_value, r TSRMLS_CC);
    +    SET_PTR(This.execute(t, c, flags));      
       } else {
         WRONG_PARAM_COUNT;
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexspecification.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexspecification.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_indexspecification.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_indexspecification.cpp     2008-06-04 15:08:49.000000000 +0200
    @@ -156,7 +156,7 @@
       if (This.find(std::string(uri, uri_len), std::string(name, name_len), index)) {
    -    RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +    DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
       } else {
         RETURN_FALSE;
    @@ -175,7 +175,7 @@
       index = This.getDefaultIndex();
    -  RETURN_STRINGL((char*)index.data(), index.length(), 1);
    +  DBXML_RETURN_STRINGL((char*)index.data(), index.length(), 1);
    } PHP_DBXML_METHOD_END()
    @@ -191,9 +191,9 @@
           zval *el;
           MAKE_STD_ZVAL(el);
           array_init(el);
    -      add_assoc_stringl(el, "uri", (char *) uri.data(), uri.length(), 1);
    -      add_assoc_stringl(el, "name", (char *) name.data(), name.length(), 1);
    -      add_assoc_stringl(el, "index", (char *) index.data(), index.length(), 1);
    +      add_assoc_stringl(el, "uri", (char *) uri.data(), (int)uri.length(), (int)1);
    +      add_assoc_stringl(el, "name", (char *) name.data(), (int)name.length(), (int)1);
    +      add_assoc_stringl(el, "index", (char *) index.data(), (int)index.length(), (int)1);
           add_next_index_zval(return_value, el);
         return;
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_inputstream.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_inputstream.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_inputstream.cpp     2006-10-30 18:46:03.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_inputstream.cpp     2008-06-03 18:12:07.000000000 +0200
    @@ -37,7 +37,7 @@
        Read a number of bytes and return them as a string */
    PHP_DBXML_METHOD_BEGIN(XmlInputStream, readBytes)
    -  long toread;
    +  int toread;
       PHP_DBXML_GETTHIS(XmlInputStream);
       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &toread)) {
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_int.hpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_int.hpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_int.hpp     2006-11-15 17:53:11.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_int.hpp     2008-06-04 15:57:38.000000000 +0200
    @@ -11,14 +11,21 @@
    # include "config.h"
    #endif
    +// this is here to work around a PHP build issue on Windows
    +#include <iostream>
    +
    extern "C" {
    #include "php.h"
    #include "php_ini.h"
    #include "ext/standard/info.h"
    +#ifdef PHP_WIN32
    +#include "php_db4.h"
    +#else
    #include "ext/db4/php_db4.h"
    +#endif
    +#include "php_dbxml.h"
    #include <exception>
    -#include "php_dbxml.h"
    #include "dbxml/DbXml.hpp"
    using namespace DbXml;
    @@ -34,7 +41,7 @@
    #define PHP_DBXML_METHOD_END()           \
    } catch(XmlException &xe) {           \
    -  php_dbxml_throw_exception(xe);         \
    +  php_dbxml_throw_exception(xe TSRMLS_CC);         \
    catch(std::exception &e) {                     \
       php_error_docref(NULL TSRMLS_CC, E_WARNING, e.what()); \
    @@ -53,6 +60,15 @@
    #endif
    +// encapsulate calls to RETURN_STRINGL macro in PHP
    +#define DBXML_RETURN_STRINGL(d, l, s) \
    +    RETURN_STRINGL((char*)(d),(int)(l), (s))
    +
    +#define DBXML_RETURN_STRING(d, s) \
    +    RETURN_STRING((char*)(d),(int)(s))
    +
    +#define DBXML_RETURN_LONG(l) RETURN_LONG((long)(l))
    +
    static inline void php_dbxml_set_object_pointer(zval object, int type, void ptr TSRMLS_DC)
       zval *z;
    @@ -120,10 +136,13 @@
         zend_list_addref(Z_RESVAL_PP(prop));
    -/* fun with those on-the-stack-only style object (XmlContainer) that have their own magic refcounts */
    +/*
    + * macros to handle the Xml* objects
    + * "object_pointer" really means object reference (e.g. XmlDocument &)
    + */
    #define PHP_DBXML_STUFFED_INSTANCES(class_type) \
    -  class php_dbxml_stuffed_##class_type { \
    +  struct php_dbxml_stuffed_##class_type { \
       public: class_type stuffed; \
       php_dbxml_stuffed_##class_type(class_type &s): stuffed(s) {} \
    @@ -136,7 +155,7 @@
         struct php_dbxml_stuffed_##class_type *s = new struct php_dbxml_stuffed_##class_type(instance); \
         php_dbxml_set_object_pointer(object, le_##class_type, s TSRMLS_CC); \
    -  static inline class_type php_dbxml_get_##class_type##_object_pointer(zval *object TSRMLS_DC) { \
    +  static inline class_type & php_dbxml_get_##class_type##_object_pointer(zval *object TSRMLS_DC) { \
         struct php_dbxml_stuffed_##class_type s = (struct php_dbxml_stuffed_##class_type ) \
             php_dbxml_get_object_pointer(object, le_##class_type, php_dbxml_##class_type##_ce, #class_type TSRMLS_CC); \
         if (s) { return s->stuffed; } /* does internal addref */ \
    @@ -147,12 +166,14 @@
         delete s; \
    -// this is nearly identical to STUFFED_INSTANCES, above, with the exception
    -// that it stores an object reference, not an actual instance, which
    -// changes the member variable to a reference, along with the
    -// accessor's return value.  Everything else is identical.
    +/*
    + * this is nearly identical to STUFFED_INSTANCES, above, with the exception
    + * that it stores an object reference, not an actual instance, which
    + * changes the member variable to a reference, along with the
    + * accessor's return value.  Everything else is identical.
    + */
    #define PHP_DBXML_STUFFED_REFERENCES(class_type) \
    -  class php_dbxml_stuffed_##class_type { \
    +  struct php_dbxml_stuffed_##class_type { \
       public: class_type &stuffed; \
       php_dbxml_stuffed_##class_type(class_type &s): stuffed(s) {} \
    @@ -165,7 +186,7 @@
         struct php_dbxml_stuffed_##class_type *s = new struct php_dbxml_stuffed_##class_type(instance); \
         php_dbxml_set_object_pointer(object, le_##class_type, s TSRMLS_CC); \
    -  static inline class_type &php_dbxml_get_##class_type##_object_pointer(zval *object TSRMLS_DC) { \
    +  static inline class_type &php_dbxml_get_##class_type##_object_ref(zval *object TSRMLS_DC) { \
         struct php_dbxml_stuffed_##class_type s = (struct php_dbxml_stuffed_##class_type ) \
             php_dbxml_get_object_pointer(object, le_##class_type, php_dbxml_##class_type##_ce, #class_type TSRMLS_CC); \
         if (s) { return s->stuffed; } /* does internal addref */ \
    @@ -177,10 +198,10 @@
    #define PHP_DBXML_STUFFED_THIS(class_type)  \
    -  class_type This = php_dbxml_get_##class_type##_object_pointer(getThis() TSRMLS_CC);
    +  class_type &This = php_dbxml_get_##class_type##_object_pointer(getThis() TSRMLS_CC);
    #define PHP_DBXML_STUFFED_REF(class_type)                    \
    -  class_type &This = php_dbxml_get_##class_type##_object_pointer(getThis() TSRMLS_CC);
    +  class_type &This = php_dbxml_get_##class_type##_object_ref(getThis() TSRMLS_CC);
    #define PHP_DBXML_DECLARE_CLASS(class_type) \
       int le_##class_type; \
    @@ -197,7 +218,7 @@
         int i;
         for(i = 0; fe.handler; i++) {
    fe[i].fname = strdup(fe[i].fname);
    - zend_str_tolower(fe[i].fname, strlen(fe[i].fname));
    + zend_str_tolower(fe[i].fname, (unsigned int)strlen(fe[i].fname));
    @@ -241,6 +262,27 @@
    This->set##propname((proptype)val); \
    +#define PHP_DBXML_STRING_GETTER_AND_SETTER(class_type, propname) \
    +PHP_METHOD(class_type, get##propname)  \
    +{                                      \
    + PHP_DBXML_GETTHIS(class_type); \
    + if (ZEND_NUM_ARGS()) {               \
    + WRONG_PARAM_COUNT; \
    + } \
    + std::string str = This->get##propname(); \
    + DBXML_RETURN_STRINGL((char*)str.data(), str.length(), 1); \
    +} \
    +PHP_METHOD(class_type, set##propname)  \
    +{                                      \
    + char *val;                           \
    + int val_len; \
    + PHP_DBXML_GETTHIS(class_type); \
    + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &val, &val_len)) { \
    + RETURN_FALSE; \
    + } \
    + This->set##propname(std::string(val, val_len)); \
    +}
    +
    PHP_DBXML_EXTERN_CLASS(XmlContainer);
    PHP_DBXML_EXTERN_CLASS(XmlData);
    PHP_DBXML_EXTERN_CLASS(XmlManager);
    @@ -261,8 +303,8 @@
    PHP_DBXML_EXTERN_CLASS(XmlInputStream);
    PHP_DBXML_EXTERN_CLASS(XmlValue);
    #ifdef PHP_DBXML_EXCEPTIONS
    -extern void php_dbxml_init_exceptions();
    -extern void php_dbxml_throw_exception(const XmlException &xe);
    +extern void php_dbxml_init_exceptions(TSRMLS_D);
    +extern void php_dbxml_throw_exception(const XmlException &xe TSRMLS_DC);
    PHP_DBXML_EXTERN_CLASS(XmlException);
    PHP_DBXML_STUFFED_INSTANCES(XmlException);
    #endif
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_manager.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_manager.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_manager.cpp     2006-10-30 18:46:04.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_manager.cpp     2008-06-04 15:13:37.000000000 +0200
    @@ -8,7 +8,6 @@
    #include "php_dbxml_int.hpp"
    -#include "ext/db4/php_db4.h"
    ZEND_RSRC_DTOR_FUNC(php_dbxml_XmlManager_dtor)
    @@ -35,7 +34,7 @@
    if (dbenv_obj) {
    - dbenv = php_db4_getDbEnvFromObj(dbenv_obj);
    + dbenv = php_db4_getDbEnvFromObj(dbenv_obj TSRMLS_CC);
    This = new XmlManager(DbEnv::get_DbEnv(dbenv), (unsigned int)flags);
    } else {
    This = new XmlManager((unsigned int)flags);
    @@ -63,7 +62,7 @@
    PHP_DBXML_GETTHIS(XmlManager);
    char *name;
    - long namelen;
    + int namelen;
    int ret = 0;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
         ret = This->existsContainer(std::string(name, namelen));
    @@ -76,7 +75,8 @@
    char *name;
    // these must be the same as BDB XML defaults
    - long namelen, flags = 0, mode = 0;
    + int namelen;
    + long flags = 0, mode = 0;
    XmlContainer::ContainerType type = XmlContainer::NodeContainer;
    zval *ztxn = NULL;
    PHP_DBXML_GETTHIS(XmlManager);
    @@ -108,7 +108,8 @@
    PHP_DBXML_METHOD_BEGIN(XmlManager, openContainer)
    char *name;
    - long namelen, flags = 0, mode = 0;
    + int namelen;
    + long flags = 0, mode = 0;
    XmlContainer::ContainerType type = XmlContainer::NodeContainer;
    zval *ztxn = NULL;
    PHP_DBXML_GETTHIS(XmlManager);
    @@ -138,7 +139,7 @@
    PHP_DBXML_GETTHIS(XmlManager);
    zval *ztxn = NULL;
    char *name;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &namelen)) {
    This->removeContainer(std::string(name, namelen));
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen)) {
    @@ -156,7 +157,7 @@
    zval *ztxn = NULL;
    XmlTransaction *txn = NULL;
    char name, newname;
    - long namelen, newnamelen;
    + int namelen, newnamelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &namelen, &newname, &newnamelen)) {
    This->renameContainer(std::string(name, namelen), std::string(newname, newnamelen));
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &newname, &newnamelen)) {
    @@ -174,7 +175,7 @@
    PHP_DBXML_METHOD_BEGIN(XmlManager, createMemBufInputStream)
    char buffer, bufID;
    - long bufferlen, bufIDlen;
    + int bufferlen, bufIDlen;
    PHP_DBXML_GETTHIS(XmlManager);
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &buffer, &bufferlen, &bufID, &bufIDlen)) {
    return;
    @@ -200,7 +201,7 @@
    PHP_DBXML_METHOD_BEGIN(XmlManager, createQueryContext)
    PHP_DBXML_GETTHIS(XmlManager);
    - long rt = (long) XmlQueryContext::LiveValues, et = (long) XmlQueryContext::Eager;
    + int rt = (int) XmlQueryContext::LiveValues, et = (int) XmlQueryContext::Eager;
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|ll", &rt, &et)) {
    return;
    @@ -228,8 +229,7 @@
    zval *ztxn = NULL;
    zval *zctx = NULL;
    char *query;
    - long querylen;
    - XmlQueryContext *context;
    + int querylen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|O", &query, &querylen, &zctx, php_dbxml_XmlQueryContext_ce)) {
    if(zctx) {
    @@ -264,7 +264,8 @@
    zval *ztxn = NULL;
    zval *zctx = NULL;
    char *query;
    - long querylen, flags = 0;
    + int querylen;
    + long flags = 0;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &query, &querylen, &zctx, php_dbxml_XmlQueryContext_ce, &flags)) {
    if(zctx) {
    @@ -346,14 +347,15 @@
    return;
    XmlContainer cont = php_dbxml_get_XmlContainer_object_pointer(zc TSRMLS_CC);
    + XmlIndexLookup lu;
    if(zv == NULL) {
    XmlValue value = XmlValue();
    - XmlIndexLookup lookup = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    - php_dbxml_set_XmlIndexLookup_object_factory(return_value, lookup TSRMLS_CC);
    + lu = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    + php_dbxml_set_XmlIndexLookup_object_factory(return_value, lu TSRMLS_CC);
    } else {
    XmlValue value = php_dbxml_get_XmlValue_object_pointer(zv TSRMLS_CC);
    - XmlIndexLookup lookup = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    - php_dbxml_set_XmlIndexLookup_object_factory(return_value, lookup TSRMLS_CC);
    + lu = This->createIndexLookup(cont, std::string(uri, uri_len), std::string(name, name_len), std::string(index, index_len), value, (XmlIndexLookup::Operation) flags);
    + php_dbxml_set_XmlIndexLookup_object_factory(return_value, lu TSRMLS_CC);
    PHP_DBXML_ADDREF(getThis());
    @@ -383,7 +385,7 @@
    zval *zuc = NULL;
    char *name;
    long flags = 0;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|Ol", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else {
    @@ -408,7 +410,7 @@
    zval *zuc = NULL;
    char *name;
    long flags = 0;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|Ol", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else {
    @@ -433,7 +435,7 @@
    zval *zuc = NULL;
    char *name;
    long flags = 0;
    - long namelen;
    + int namelen;
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s|Ol", &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else if(SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|Ol", &ztxn, php_dbxml_XmlTransaction_ce, &name, &namelen, &zuc, php_dbxml_XmlUpdateContext_ce, &flags)) {
    } else {
    @@ -454,7 +456,7 @@
    PHP_DBXML_GETTHIS(XmlManager);
    std::string buffer = This->getHome();
    - RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    + DBXML_RETURN_STRINGL((char *)buffer.data(), buffer.length(), 1);
    PHP_DBXML_METHOD_END()
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_modify.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_modify.cpp
    --- dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_modify.cpp     2006-10-30 18:46:04.000000000 +0100
    +++ dbxml-2.3.11-64/dbxml/src/php/php_dbxml_modify.cpp     2008-06-04 15:14:42.000000000 +0200
    @@ -29,7 +29,7 @@
    zval zexp, zres;
    long type;
    char name, content;
    - long name_len, content_len;
    + int name_len, content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
    @@ -66,7 +66,7 @@
    zval zexp, zres;
    long type;
    char name, content;
    - long name_len, content_len;
    + int name_len, content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
    @@ -103,7 +103,7 @@
    zval zexp, zres;
    long type, location = -1;
    char name, content;
    - long name_len, content_len;
    + int name_len, content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
    @@ -140,7 +140,7 @@
    zval *zexp;
    char *content;
    - long content_len;
    + int content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &zexp, php_dbxml_XmlQueryExpression_ce,
    @@ -159,7 +159,7 @@
    zval *zexp;
    char *content;
    - long content_len;
    + int content_len;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os", &zexp, php_dbxml_XmlQueryExpression_ce,
    @@ -208,8 +208,6 @@
    PHP_DBXML_METHOD_BEGIN(XmlModify, execute)
    - char *encoding;
    - int encoding_len;
    zval zv, zqc, zuc, zt;
    PHP_DBXML_STUFFED_THIS(XmlModify);
    diff -Naur -x '*xerces-c-src*' -x '*build_unix*' -x '*configure' -x '*Builder.pm' -x '*More.pm' -x'*const-c.inc' -x '*setup.py' dbxml-2.3.11.orig/dbxml/src/php/php_dbxml_querycontext.cpp dbxml-2.3.11-64/dbxml/src/php/php_dbxml_querycontext.cpp
    --- dbxml-2.3.11.orig/dbxml/

  • PHP iTunes U authentication issue

    I’ve been working with integrating iTunes U with Moodle. On the Moodle site there is an iTunes U block available for integrating the 2 systems. I’ve been trying to use this and I am able to get to the iTunes U site from Moodle, but I am not being signed into the site as an authenticated user. I can’t seem to figure out why. I was however able to authenticate with a Perl script.
    The Moodle block has a Setting section where I fill in all my site specific information such as the Shared Secret. This is definitely working fine as I am able to get to my site without issue. But, the passing of the credentials and identity do not seem to be working because I am not being signed in as an authenticated user.
    Right now my Credentials are very basic – formatted just like the sample ones – such as:
    Adminstrator@urn:mace:itunesu.com:sites:example.edu (where example.edu is my school’s name).
    Can anyone review the files below and shed some light on why I am not getting authenticated?
    Thanks.
    Itunes_redirect.php
    <?php // $Id: itunesu_redirect.php,v 1.1 2008/06/06 19:08:49 mchurch Exp $
    require_once('../../config.php');
    global $USER, $CFG;
    require_once($CFG->dirroot.'/lib/weblib.php');
    require_once($CFG->dirroot.'/lib/moodlelib.php');
    require_once($CFG->dirroot.'/blocks/itunesu/itunes.php');
    if (!isloggedin()) {
    print_error('sessionerroruser', '' , $CFG->wwwroot);
    $destination = required_param('destination', SITEID, PARAM_INT); // iTunes U destination
    $name = fullname($USER);
    /* Create instance of the itunes class and initalized instance variables */
    $itunes = new itunes();
    $itunes->setUser($name, $USER->email, $USER->username, $USER->id);
    /* more work needs to be done with determining credentials */
    $itunes->setAdminCredential($CFG->blockitunesuadmincred);
    $itunes->setInstructorCredential($CFG->blockitunesuinsturctcred);
    $itunes->addAdminCredentials();
    $itunes->setSiteURL($CFG->blockitunesuurl);
    $itunes->setSharedSecret($CFG->blockitunesusharedsecret);
    $itunes->setDestination($destination);
    $itunes->invokeAction();
    ?>
    Itunes.php file:
    <?php
    # iTunes Authentication Class
    # Written by Aaron Axelsen - [email protected]
    # University of Wisconsin - Whitewater
    # Edited by Ryan Pharis, [email protected] - Texas Tech University
    # Class based on the Apple provided ITunesU.pl
    # example script.
    # REQUIREMENTS:
    # PHP:
    # - tested with PHP 5.2
    # - make sure hash_hmac() works - <a class="jive-link-external-small" href="http://us2.php.net/manual/en/function.hash-hmac.php">http://us2.php.net/m anual/en/function.hash-hmac.php</a>
    # - php curl support
    #Example Usage:
    <?php
    include('itunes.php');
    $itunes = new itunes();
    // show loading screen while processing request
    //include(ROOTURL.'/includes/pages/itunesload.php');
    // Set User
    $itunes->setUser("Jane Doe", "[email protected]", "jdoe", "42");
    // Set Admin Permissions
    $itunes->addAdminCredentials();
    // Set Instructor Permission
    //$itunes->addInstructorCredential('uniquename_fromitunes');
    // Set Student Credential
    //$itunes->addStudentCredential('uniquename_fromitunes');
    // Set Handle
    // This will direct login to the specific page
    #$itunes->setHandle('');
    // iTunes U Auth Debugging
    $itunes->setDebug(true);
    $itunes->invokeAction();
    ?>
    class itunes {
    // Oktech - add
    var $authtoken;
    var $siteURL;
    var $debugSuffix;
    var $sharedSecret;
    var $administratorCredential;
    var $instructorCredential;
    var $studentCredential;
    var $urlonly;
    var $urlcredentials;
    var $destination;
    // Oktech
    * Create iTunes Object
    public function __construct() {
    $this->setDebug(false);
    $this->siteURL = 'https://deimos.apple.com/WebObjects/Core.woa/Browse/example.edu';
    $this->directSiteURL = 'https://www.example.edu/cgi-bin/itunesu';
    $this->debugSuffix = '/abc1234';
    $this->sharedSecret = 'STRINGOFTHIRTYTWOLETTERSORDIGITS';
    $this->administratorCredential = 'Administrator@urn:mace:itunesu.com:sites:example.edu';
    $this->studentCredential = 'Student@urn:mace:itunesu.com:sites:example.edu';
    $this->instructorCredential = 'Instructor@urn:mace:itunesu.com:sites:example.edu';
    $this->credentials = array();
    // Set domain
    $this->setDomain();
    // Oktech add
    public function getInstructorCredential() {
    return $this->instructorCredential;
    public function setInstructorCredential($credential) {
    $this->instructorCredential = $credential;
    public function getStudentCredential() {
    return $this->studentCredential;
    public function setStudentCredential($credential) {
    $this->studentCredential = $credential;
    public function getAdminCredential() {
    return $this->administratorCredential;
    public function setAdminCredential($credential) {
    $this->administratorCredential = $credential;
    public function getSharedSecret() {
    return $this->sharedSecret;
    public function setSharedSecret($sharedsecret) {
    $this->sharedSecret = $sharedsecret;
    public function getAuthToken() {
    return $this->authtoken;
    public function setAuthToken($authtoken) {
    $this->authtoken = $authtoken;
    public function getDebugSuffix() {
    return $this->directSiteURL;
    public function setDebugSuffix($debugsuffix) {
    $this->directSiteURL = $debugsuffix;
    public function getSiteURL() {
    return $this->siteURL;
    public function setSiteURL($siteurl) {
    $this->siteURL = $siteurl;
    * Extract the URL from the return html
    * block from the iTunes U server. Replace
    * Apple's itmss tag with https
    private function extractURL($htmlblock) {
    $remainder = '';
    $pos = 0;
    $result = '';
    $remainder = strstr($htmlblock, "_open('i");
    $remainder = substr_replace($remainder, '', 0, 7);
    $remainder = substr_replace($remainder, 'https', 0, 5);
    $pos = strpos($remainder, "');");
    $result = substr_replace($remainder, '', $pos);
    $this->urlonly = $result;
    public function getExtractedURL() {
    return $this->urlonly;
    * Extract the credentials part from the returned URL from
    * the iTunes U server
    public function extractURLCredentials($url) {
    $result = '';
    $pos = 0;
    $remainder = strstr($url, "gtcc.edu?");
    $remainder = substr_replace($remainder, '', 0, 9);
    $this->urlcredentials = $remainder;
    public function getExtractedURLCredentials() {
    return $this->urlcredentials;
    public function setDestination($destination) {
    $this->destination = $destination;
    public function getDestination() {
    return $this->destination;
    // Oktech add
    * Add's admin credentials for a given user
    public function addAdminCredentials() {
    $this->addCredentials($this->administratorCredential);
    * Add Student Credential for a given course
    public function addStudentCredential($unique) {
    $this->addCredentials($this->studentCredential.":$unique");
    * Add Instructor Credential for a given course
    public function addInstructorCredential($unique) {
    $this->addCredentials($this->instructorCredential.":$unique");
    * Set User Information
    public function setUser($name, $email, $netid, $userid) {
    $this->name = $name;
    $this->email = $email;
    $this->netid = $netid;
    $this->userid = $userid;
    return true;
    * Set the Domain
    * Takes the siteURL and splits off the destination, hostname and action path.
    private function setDomain() {
    $tmpArray = split("/",$this->siteURL);
    $this->siteDomain = $tmpArray[sizeof($tmpArray)-1];
    $this->actionPath = preg_replace("/https:\/\/(.+?)\/.*/",'$1',$this->siteURL);
    $pattern = "/https:\/\/".$this->actionPath."(.*)/";
    $this->hostName = preg_replace($pattern,'$1',$this->siteURL);
    $this->destination = $this->siteDomain;
    return true;
    * Set the Handle
    * Takes the handle as input and forms the get upload url string
    * This is needed for using the API to upload files directly to iTunes U
    public function setHandle($handleIn) {
    $this->handle = $handleIn;
    $this->getUploadUrl = "http://deimos.apple.com/WebObjects/Core.woa/API/GetUploadURL/".$this->siteDoma in.'.'.$this->handle;
    return true;
    * Get Identity String
    * Combine user identity information into an appropriately formatted string.
    * take the arguments passed into the function copy them to variables
    private function getIdentityString() {
    # wrap the elements into the required delimiters.
    return sprintf('"%s" <%s> (%s) [%s]', $this->name, $this->email, $this->netid, $this->userid);
    * Add Credentials to Array
    * Allows to push multiple credientials for a user onto the array
    public function addCredentials($credentials) {
    array_push($this->credentials,$credentials);
    return true;
    * Get Credentials String
    * this is equivalent to join(';', @_); this function is present
    * for consistency with the Java example.
    * concatenates all the passed in credentials into a string
    * with a semicolon delimiting the credentials in the string.
    private function getCredentialsString() {
    #make sure that at least one credential is passed in
    if (sizeof($this->credentials) < 1)
    return false;
    return implode(";",$this->credentials);
    private function getAuthorizationToken() {
    # Create a buffer with which to generate the authorization token.
    $buffer = "";
    # create the POST Content and sign it
    $buffer .= "credentials=" . urlencode($this->getCredentialsString());
    $buffer .= "&identity=" . urlencode($this->identity);
    $buffer .= "&time=" . urlencode(mktime());
    # returns a signed message that is sent to the server
    $signature = hash_hmac('SHA256', $buffer, $this->sharedSecret);
    # append the signature to the POST content
    return sprintf("%s&signature=%s", $buffer, $signature);
    * Invoke Action
    * Send a request to iTunes U and record the response.
    * Net:HTTPS is used to get better control of the encoding of the POST data
    * as HTTP::Request::Common does not encode parentheses and Java's URLEncoder
    * does.
    public function invokeAction() {
    $this->identity = $this->getIdentityString();
    $this->token = $this->getAuthorizationToken();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->generateURL() . '?' . $this->token);
    //curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // Oktech - change
    $this->authtoken = curl_exec($ch);
    curl_close($ch);
    /* Start a new sesstion and send a request for specific content with the appropriate credentials */
    $ch = curl_init();
    $this->extractURL($this->authtoken);
    $this->extractURLCredentials($this->urlonly);
    curl_setopt($ch, CURLOPT_URL, $this->siteURL . '.' . $this->destination . '?' . $this->urlcredentials);
    //curl_setopt($ch, CURLOPT_POST, 1);
    curl_exec($ch);
    curl_close($ch);
    // Oktech
    * Auth and Upload File to iTunes U
    * This method is said to not be as heavily tested by apple, so you may have
    * unexpected results.
    * $fileIn - full system path to the file you desire to upload
    public function uploadFile($fileIn) {
    $this->identity = $this->getIdentityString();
    $this->token = $this->getAuthorizationToken();
    // Escape the filename
    $f = escapeshellcmd($fileIn);
    // Contact Apple and Get the Upload URL
    $upUrl = curl_init($this->getUploadUrl.'?'.$this->token);
    curl_setopt($upUrl, CURLOPT_RETURNTRANSFER, true);
    $uploadURL = curl_exec($upUrl);
    $error = curl_error($upUrl);
    $http_code = curl_getinfo($upUrl ,CURLINFOHTTPCODE);
    curl_close($upUrl);
    print $http_code;
    print "
    $uploadURL";
    if ($error) {
    print "
    $error";
    # Currently not working using php/curl functions. For now, we are just going to echo a system command .. see below
    #// Push out the designated file to iTunes U
    #// Build Post Fields
    #$postfields = array("file" => "@$fileIn");
    #$pushUrl = curl_init($uploadURL);
    #curl_setopt($pushUrl, CURLOPT_FAILONERROR, 1);
    #curl_setopt($pushUrl, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
    #curl_setopt($pushUrl, CURLOPT_VERBOSE, 1);
    #curl_setopt($pushUrl, CURLOPT_RETURNTRANSFER, true);
    #curl_setopt($pushUrl, CURLOPT_POST, true);
    #curl_setopt($pushUrl, CURLOPT_POSTFILEDS, $postfields);
    #$output = curl_exec($pushUrl);
    #$error = curl_error($pushUrl);
    #$http_code = curl_getinfo($pushUrl, CURLINFOHTTPCODE);
    #curl_close($pushUrl);
    #print "
    #print $http_code;
    #print "
    $output";
    #if ($error) {
    # print "
    $error";
    // Set the php time limit higher so it doesnt time out.
    settimelimit(1200);
    // System command to initiate curl and upload the file. (Temp until I figure out the php curl commands to do it)
    $command = "curl -S -F file=@$f $uploadURL";
    echo "
    echo $command;
    exec($command, $result, $error);
    if ($error) {
    echo "I'm busted";
    } else {
    print_r($result);
    echo $command;
    * Set Debugging
    * Enable/Disable debugging of iTunes U Authentication
    public function setDebug($bool) {
    if ($bool) {
    $this->debug = true;
    } else {
    $this->debug = false;
    return true;
    * Generate Site URL
    * Append debug suffix to end of url if debugging is enabled
    private function generateURL() {
    if ($this->debug) {
    return $this->siteURL.$this->debugSuffix;
    } elseif ($this->isHandleSet()) {
    return $this->directSiteURL.'.'.$this->handle;
    } else {
    return $this->siteURL;
    * Check to see if the handle is set
    private function isHandleSet() {
    if (isset($this->handle))
    return true;
    else
    return false;
    ?>

    Janet ... hmmm ... I suppose it could also be "Jane T. Smith" ... ah well, anywho,
    One thing to understand when it comes to credentialling is that, even if your transfer CGI (Moodle block) doesn't work ... if you redirect someone to your iTunes U site, that person will -always- carry two credentials ... "Unauthenticated" and "All". You do not have to assign the credentials ... they are automatic.
    Put it this way, if I direct you to my site:
    https://deimos.apple.com/WebObjects/Core.woa/Browse/uic.edu
    if you click on that link, authentication or no, Apple will give you the "Unauthenticated" and "All" credentials. Anywhere on my site where those creds are good, you'll have access.
    Hmmm ... maybe I can rephrase it this way ... there are four credentials that are a part of every site ...
    All ... everyone who accesses your site gets this cred ... everyone.
    Authenticated ... if you pass a valid iTunes U URL request for a user, he/she will get this cred.
    Unauthenticated ... this cred is given whenever someone gets to your site -without- a tokenized (credentials, identity, time, signature) URL request. For example, if someone uses your site base URL without any modification.
    Administrator ... this cred has total access to a site.
    So if you access your site using your admin cred, you'll actually carry three creds ... "Administrator" (of course), but also "All" and "Authenticated".
    So why this long discussion of creds? Well, if you're getting in with the "Unauthenticated" credential, it's a sure sign your transfer CGI (Moodle thingy) isn't working ... at all. It's not that you can't pass the admin cred ... or identity info ... you're not passing any info. And because you're not passing any info, iTunes U does the default thing ... give you "All" and "Unauthenticated" access.

  • Setting up MAMP and Dreamweaver - PHP - URL Not Found

    Hello,
    I'm running into a seemly simple problem, but I just can't figure out the cause. I wanted to test a php file. I installed MAMP on my Mac 10.6.8 with all the default settings...Apache port 8888, MySQL port 8889 and document root /Applications/MAMP/htdocs.
    In Dreamweaver CS5.5, the settings are: Site Name: PHP Testing; Local Site Folder: /Applications/MAMP/htdocs; Server Name: Local Testing; Connect using: Local/Network; Server Folder: /Applications/MAMP/htdocs; Web URL: http://localhost:8888/. Testing server model is selected as PHP MySQL.
    In the htdocs folder, I have a simple timetest.php with php echoing the system time. When I preview in a browser or even do Live View in Dreamweaver, the URL is "http://localhost:8888/timetest.php", it's giving me the error "Not Found. The requested URL/timetest.php was not found on this server".
    Am I missing something simple?
    Thank you!

    Oops, I guess the images didn't show.

  • Why can't I find contents in eg. .php files?

    If I press "Apple+F" in Finder to bring up the search dialog, and try to search files where "Name contains .php" and "Contents whatever", Finder show me the .php files in the folder when specifying the first criteria, but as soon as I start typing a text to search for in "Contents" all the .php files disappear again even though the search text is found in some of the .php files.
    I tried creating a simple text file and copied it to test.php, test.css, test.html, test.xml and test.whatever. Search for contents works fine for the files with extension .html, .xml and .whatever, but for .css and .php it doesn't work.
    Can somebody please explain to me why Finder behaves different with different extensions, and if there is a way I can make it search for contents in .php files?
    Regards,
    Christian

    The content part of the Spotlight data base depends on there being mdimport plug-ins for that type of content. If there is no mdimporter then the content is not indexed, and there isn't one for either php or css files. See the link in this thread:
    http://discussions.apple.com/message.jspa?messageID=5571301#5571301
    If the hacking business doesn't appeal to you the only other work around I can think of is to save a copy of the php and css files with a .txt extension, which is content indexed.
    Francine
    Francine
    Schwieder

  • Mediawiki, mysql, php? problems [SOLVED]

    On Sunday my Arch install that is hosted by Slicehost became unresponsive to them so they had to do an emergency reboot. After it came back up my install of mediawiki was (and still is) only returning a blank page (at least in Firefox). After some digging I found out that part of the problem was that mysqld wasn't starting so I managed to get that fixed by commenting out the lines relating to innodb and putting in skip-innodb into my.cnf. But I'm still getting a blank page.
    According to Mediawiki's manual, "A blank white page indicates a PHP error which isn't being printed to the screen." They give two lines to put into LocalSettings.php to force error messages but after doing that I'm still getting a blank page. Changing display_errors in php.ini to ON didn't have any effect.  When I load the wiki in Safari I get the following error: "Got java.io.EOFException (Server closed connection while sending the HTTP header.): http://some_url.com/mediawiki/index.php/Main_Page". I have no idea what this error means and googling java.io.EOFException doesn't bring up anything very helpful. My PHP Test Page indicates that PHP is up and running.
    Any ideas on fixes or where I can find more clues?
    [EDIT]
    Mysql was definitely the root of the problems with Mediawiki. I tried nearly every suggestion listed in the forums for fixing a mysql install that wouldn't start but nothing worked. I even completely uninstalled mysql and reinstalled it but it still refused to start. I switched over to postgresql and switched mediawiki to run with that. Problem solved.
    Last edited by k_odoma (2009-05-23 01:48:35)

    There are some other things that must be done to connect to
    the database
    (such as passing the usernamee, password, and host info to
    mysql_connect()
    and storing the connection resource), and those might be in
    the include
    files. I generally place all of the connection parameters in
    a separate file
    that is located in a folder that can't be accessed by a
    browser, for
    security purposes.
    Paul Swanson
    Portland, Oregon, USA
    "Amy Blankenship *AdobeCommunityExpert*"
    <[email protected]>
    wrote in message news:edk6ui$69c$[email protected]..
    > What's in the include(s)?
    >
    > "83Dons" <[email protected]> wrote in
    message
    > news:edk5s5$4uk$[email protected]..
    > > Here is the php code for the 'read' and 'write'
    parts:
    > >
    > >
    > >
    > > <?php
    > > include '......';
    > > mysql_select_db('clinskills') or die("UNABLE TO
    CONNECT TO
    DATABASE");
    > > $sql = "select A1Answer from authorware where id =
    '13'";
    > > $result = mysql_query($sql);
    > > $answer1 = mysql_result($result,0,"A1Answer");
    > > print $answer1;
    > > ?>
    > >
    > > <?php
    > > include '............';
    > > mysql_select_db('clinskills') or die("UNABLE TO
    CONNECT TO
    DATABASE");
    > > $newdata = $_GET['data'];
    > > mysql_query("insert into authorware (A1Answer)
    values('$newdata')")
    or
    > > die(mysql_error());
    > > mysql_close(); ?>
    > >
    >
    >

Maybe you are looking for