Giter Club home page Giter Club logo

goemphp's Introduction

GoEmPHP

This package is built for Embedding PHP into Golang.

It is easy to use:

    script = php.New()
    script.Startup()
    defer script.Close() 
    if err := script.Eval("phpinfo();"); err != nil {
        log.Fatal(err)
    }
    if err := script.Exec("foobar.php"); err != nil {
        log.Fatal(err)
    }

For more examples, please read the souce code: php_test.go.

INSTALL

The first step is downloading the package. Please note that you must specify the param -d.

$ go get -d github.com/mikespook/goemphp

Then, following step is running bootstrap.sh to prepar the embeded PHP library. It has one paramater with 4 values: [5.4 | 5.5 | 5.6 | ng]

Eg.,

./bootstrap.sh 5.6

will wget, configure and make the libphp5.so file which can be used for embedding PHP.

It will be a long time waiting. When you see Congratulations!!!, it means you have already got the proper .so file placed in ./php-lib/libs/. You could check it manually.

The third step is calling go generate to prepare source files which will be built.

If generate process do not report any issue, then you could call go build to build GoEmPHP.

After that, please use ./test.sh for testing the package. And of course, you could run go test -ldflags="-r ./php-lib/libs/" manually, or put the .so into one of system library directories and run go test. The same library mechanism should be used when you use this library in your application.

Contacts

Open Source

See LICENSE for more information.

goemphp's People

Contributors

mikespook avatar varun-sethu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

goemphp's Issues

can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB)

trying to compile this package against php version 5.4.15, custom build on a Mac OS X 10.7.5
gcc version 4.2.1

gcc -I . -g -O2 -fPIC -m64 -pthread -fno-common -o $WORK/github.com/mikespook/goemphp/php/_obj/_cgo_.o $WORK/github.com/mikespook/goemphp/php/_obj/_cgo_main.o $WORK/github.com/mikespook/goemphp/php/_obj/_cgo_export.o $WORK/github.com/mikespook/goemphp/php/_obj/php.cgo2.o $WORK/github.com/mikespook/goemphp/php/_obj/php_embed.o -lphp5
# github.com/mikespook/goemphp/php

ld: can't link with bundle (MH_BUNDLE) only dylibs (MH_DYLIB) for architecture x86_64
collect2: ld returned 1 exit status

Headers in PHP in with embedded PHP

If the php send a header for 302 , 301 , 404 in php script , and the golang project is a web project , the golang project need send the header to the web also .
thanks .

Can I compile output as standalone and portable.

Dear Mikespook

Goemphp is good idea. But when i'm running output binary file on another system. It's failed to run. I want to make portable and standalone binary file. Is it possible or not?

Sessions with embedded PHP

I'm having issues with starting sessions with the library... C is not my strongsuit so I hope you could help me with this... With a php script like this
<?php
session_start();

It always gives me:

Warning: session_start(): Cannot send session cookie - headers already sent in /vagrant/go_php/public/index.php on line 2

Call Stack:
0.0028 220704 1. {main}() /vagrant/go_php/public/index.php:0
0.0028 220752 2. session_start() /vagrant/go_php/public/index.php:2

Warning: session_start(): Cannot send session cache limiter - headers already sent in /vagrant/go_php/public/index.php on line 2

Call Stack:
0.0028 220704 1. {main}() /vagrant/go_php/public/index.php:0
0.0028 220752 2. session_start() /vagrant/go_php/public/index.php:2

2014/09/03 18:05:06 session_start(): Cannot send session cache limiter - headers already sent
exit status 1

Failed to install

I got this below error when I'm running this command

Command:
go get github.com/mikespook/goemphp/php

Error:

# github.com/mikespook/goemphp/php
GoLang/src/github.com/mikespook/goemphp/php/php.go:9:19: fatal error: zend.h: No such file or directory
 // #include "zend.h"
                   ^
compilation terminated.

output redirecting

We should not use syscall for redirecting output, otherwise it will affect whole app's output.
There should be a way which can manipulate PHP stdout/stderr in C.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.