2014-09-10 3 views
0

Я пытаюсь запустить Java с PHP, но я даже не могу использовать абсолютный путь к исполняемому Java (C: \ Windows \ System32 \ java.exe).Запустить java из скрипта PHP

Я обнаружил, что проблема в том, что PHP не может получить доступ к этому файлу по какой-либо причине. Я стараюсь:

<?php var_dump(file_exists('C:\Windows\System32\java.exe')); // returns false. 

Файл действительно существует, и я (пользователь, у которого я запускаю скрипт php) имеет разрешение читать и выполнять его. Это очень странно, потому что я могу выполнить notepad.exe и

<?php var_dump(file_exists('C:\Windows\System32\notepad.exe')); // returns true. 

Любые идеи?

php -v 
PHP 5.3.27 (cli) (built: Jul 10 2013 20:36:59) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies 
with Xdebug v2.2.2, Copyright (c) 2002-2013, by Derick Rethans 

java -version 
java version "1.7.0_40" 
Java(TM) SE Runtime Environment (build 1.7.0_40-b43) 
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode) 

ОС Windows 7 64bit

PHPinfo:

phpinfo() PHP Version => 5.3.27

System => Windows NT IT8 6.1 build 7601 (Windows 7 Business Edition Service Pack 1) i586 
Build Date => Jul 10 2013 20:35:35 
Compiler => MSVC9 (Visual C++ 2008) 
Architecture => x86 
Configure Command => cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared" "--with-enchant=shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--disable-static-analyze" 
Server API => Command Line Interface 
Virtual Directory Support => disabled 
Configuration File (php.ini) Path => C:\Windows 
Loaded Configuration File => C:\Program Files (x86)\PHP\php.ini 
Scan this dir for additional .ini files => (none) 
Additional .ini files parsed => (none) 
PHP API => 20090626 
PHP Extension => 20090626 
Zend Extension => 220090626 
Zend Extension Build => API220090626,NTS,VC9 
PHP Extension Build => API20090626,NTS,VC9 
Debug Build => no 
Thread Safety => disabled 
Zend Memory Manager => enabled 
Zend Multibyte Support => disabled 
IPv6 Support => enabled 
Registered PHP Streams => php, file, glob, data, http, ftp, zip, compress.zlib, compress.bzip2, https, ftps, phar, ssh2.shell, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp 
Registered Stream Socket Transports => tcp, udp, ssl, sslv3, sslv2, tls 
Registered Stream Filters => convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*, bzip2.* 

ответ

0

как предложение:
от PHP.net до file_exists:

This function returns FALSE for files inaccessible due to safe mode restrictions. However these files still can be included if they are located in safe_mode_include_dir.

Далее:
Результат file_exists будет кэшировать.
Может быть, вы должны вызвать clearstatcache()

РЕДАКТИРОВАНИЕ:
Вы можете попробовать следующее:

<?php var_dump(file_exists("C:\\Windows\\System32\\java.exe"));

+0

safe_mode отключен в моем php.ini clearstatcache() не помогло – NikitaObukhov

+0

я отредактировал мой ответ ... – Ben

0

Столкнулся с такой же проблемой и решить проблему путем перемещения java.exe из папки Windows/System32 для например C:/Java (Предположим, что исполняемый файл C: /Java/java.exe фактически существует) 'file_exists ("C: /Java/java.exe")' (и 'is_executable ("C:/Java/java. exe ") ') теперь должен возвращать true.

Смежные вопросы