JavaPHP

其他类别 2025-08-19

JavaPHP

JavaPHP是一个轻巧的Java库,允许将PHP代码执行到Java中,它不依赖任何依赖项,并且是完全独立的。

它可以与Web服务器(Nanohttpd,Java httpserver等...)或正常Java项目的一部分一起使用。

  • 从Java执行PHP文件
  • 支持所有HTTP方法和标题
  • 通过Consumer进行自定义错误处理
  • 与PHP-FPM或php-cgi命令兼容

如何使用

  • 下载源代码并构建并导入它直接从我的Maven存储库中导入它:
JavaPHP 2.1.1 ">
< repositories >
    < repository >
        < id >breadeatercdnid >
        < url >https://cdn.b**r*eadeater.fr/mavenurl >
    repository >
repositories >

< dependencies >
    < dependency >
        < groupId >fr.breadeatergroupId >
        < artifactId > JavaPHP artifactId >
        < version >2.1.1version >
    dependency >
dependencies >
  • 如果不使用PHP FPM,请使用以下方式启动PHP FastCGI服务器
 php-cgi -b 127.0.0.1:

警告:出于安全原因,建议将PHP-CGI或PHP-FPM绑定到Localhost!

  • 使用以下示例代码在Java中运行PHP文件:
JavaPHPTest { public static void main(String[] args){ JavaPHP JavaPHP = new JavaPHP (new InetSocketAddress("127.0.0.1", 7000)); // Create a JavaPHP instance with your PHP-CGI / PHP-FPM server address as parameter Request request = new Request(); // Create a request instance to specify method, body, etc... Headers headers = new Headers(); // Create a new Headers instance (if not already created), will be used to specify HTTP headers headers.add("Content-Type", "text/plain"); // Sets Content-Type to text/plain request.setRequestMethod("POST"); // Sets request method to POST request.setRequestPath("/"); request.setRequestBody("Hello World !"); // Sets 'Hello World !' as body request.setRequestHttpVersion("HTTP/1.1"); request.setRequestAddress(new InetSocketAddress("127.0.0.1", 47829)); // The remote address (basically the user address) request.setRequestHeaders(headers); // Gives the headers to the request instance request.setIsHTTPS(false); // Sets HTTPS to false for example // Specifies the options that will be used when running a PHP file // Note: The location of the PHP file is the same location as the PHP-CGI / PHP-FPM working directory, same for Document Root JavaPHP .Options options = new JavaPHP .Options() .setPHPDocumentRoot(new File("./").getAbsolutePath()) .setPHPFilepath(new File("./index.php").getAbsolutePath()) .setPHPServerSoftwareName("Java") // Sets the Server Software name (e.g Apache, Nginx, etc...) .setPHPServerAddress("127.0.0.1") // The address where the HTTP server listen to .setPHPServerPort(80); // The port where the HTTP server listen to // Handles error if a error occurs while running the PHP file // In this case we just simply throw the error JavaPHP .onError((err) -> { try { throw err; } catch (Exception e) { throw new RuntimeException(e); } }); // Runs the PHP file and get the Response containing headers, body and status code given by PHP FastCGI Response response = JavaPHP .run(options, request); // Prints the results in the terminal response.getResultHeaders().forEach((name, value) -> System.out.println(name + ": " + value.getFirst())); System.out.println(response.getResultStatusCode()); System.out.println(response.getResultBody()); } }">
 public class JavaPHP Test {
    public static void main ( String [] args ){
        JavaPHP JavaPHP = new JavaPHP ( new InetSocketAddress ( "127.0.0.1" , 7000 )); // Create a JavaPHP instance with your PHP-CGI / PHP-FPM server address as parameter
        Request request = new Request (); // Create a request instance to specify method, body, etc...
        Headers headers = new Headers (); // Create a new Headers instance (if not already created), will be used to specify HTTP headers

        headers . add ( "Content-Type" , "text/plain" ); // Sets Content-Type to text/plain

        request . setRequestMethod ( "POST" ); // Sets request method to POST
        request . setRequestPath ( "/" );
        request . setRequestBody ( "Hello World !" ); // Sets 'Hello World !' as body
        request . setRequestHttpVersion ( "HTTP/1.1" );
        request . setRequestAddress ( new InetSocketAddress ( "127.0.0.1" , 47829 )); // The remote address (basically the user address)
        request . setRequestHeaders ( headers ); // Gives the headers to the request instance
        request . setIsHTTPS ( false ); // Sets HTTPS to false for example

        // Specifies the options that will be used when running a PHP file
        // Note: The location of the PHP file is the same location as the PHP-CGI / PHP-FPM working directory, same for Document Root
        JavaPHP . Options options = new JavaPHP . Options ()
                . setPHPDocumentRoot ( new File ( "./" ). getAbsolutePath ())
                . setPHPFilepath ( new File ( "./index.php" ). getAbsolutePath ())
                . setPHPServerSoftwareName ( "Java" ) // Sets the Server Software name (e.g Apache, Nginx, etc...)
                . setPHPServerAddress ( "127.0.0.1" ) // The address where the HTTP server listen to
                . setPHPServerPort ( 80 ); // The port where the HTTP server listen to

        // Handles error if a error occurs while running the PHP file
        // In this case we just simply throw the error
        JavaPHP . onError (( err ) -> {
            try {
                throw err ;
            } catch ( Exception e ) {
                throw new RuntimeException ( e );
            }
        });

        // Runs the PHP file and get the Response containing headers, body and status code given by PHP FastCGI
        Response response = JavaPHP . run ( options , request );

        // Prints the results in the terminal
        response . getResultHeaders (). forEach (( name , value ) -> System . out . println ( name + ": " + value . getFirst ()));

        System . out . println ( response . getResultStatusCode ());
        System . out . println ( response . getResultBody ());
    }
}

贡献

您可以根据需要做出尽可能多的贡献,贡献者将在读书中列出。

注意:仅在Java代码中进行修改为贡献。

贡献者

(尚无贡献者)

执照

该项目已获得MIT许可证的许可,请参阅许可证以获取更多信息。

下载源码

通过命令行克隆项目:

git clone https://github.com/BreadEaterYT/JavaPHP.git