NYCPHP Meetup

NYPHP.org

[nycphp-talk] PHP on Win.: Get Drive Letter for Current Script

Jayesh Sheth jayeshsh at ceruleansky.com
Sat Mar 12 22:34:59 EST 2005


Hi Tim,

thanks for your reply. You referred me to the current Windows API
function, but my sample (PHP) code did not work.

I think is because this extension only worked with a range of older
versions of PHP, judging from information on the individual function pages
for this extension (
http://us4.php.net/manual/en/function.w32api-deftype.php ).

Here the sample code that I used with PHP 4.3.10

<?php
// Get current directory using Windows System DLL API

// Load the w32api extension
// Dynamic loading did not work for me (so I added an entry to php.ini)
 dl("php_w32api.dll");

// Register Windows API function
w32api_register_function("kernel32.dll", "GetCurrentDirectoryA", "string");

// Make a buffer of appropriate size to store the current directory path
$buf = str_repeat(' ', 255);

// Call the function so that it stores the value of the current directory
path in $buf
GetCurrentDirectoryA($buf, strlen($buf));

// Output it:
echo "Current directory is $buf .";

?>

This is resulted in a fatal error saying that GetCurrentDirectoryA is not
defined as a function. I.e., this extension is not working.

I tried the ffi ( http://pecl.php.net/package/ffi ) extension PHP 5, but
it gave the following error:
---------------------------
Warning
---------------------------
PHP Startup: Ĥ8: Unable to initialize module
Module compiled with module API=20020429, debug=0, thread-safety=1
PHP    compiled with module API=20041030, debug=0, thread-safety=1
These options need to match

If anyone knows a way around please let me know (perhaps a C extension for
PHP 4? I can understand a bit of C when I read it, but writing it is
another thing).

Thanks,

- Jay Sheth



More information about the talk mailing list