Thursday, April 21, 2011

PAW Server & PHP

In this post I would like to write about what is coming up next in PAW development.
PAW supports BeanShell code to create dynamic pages. BeanShell is well suited for Android, because it integrates will into the OS by supporting the Android Java API.

The foundation of PAW is Brazil a web application framework which was developed by SUN (now Oracle). Although not widely used the framework has the advantage of being very small and flexible.
What I was thinking about for a while was to add PHP support. PHP is widely used  around the net. PHP's reputation is questionable and that are people who love and others who hate it. But it's undoubtedly one of the most used frameworks when it comes to web development.

PHP basically comes in two flawors, a CLI and a CGI version. To integrate PHP into the context of a web server the CGI version is needed.

Android PHP Project
Knowing that there is a CLI version provided by the Android PHP Project I headed over to their forum asking if they could provide a CGI version in addition to the CLI version.

Unfortunately the guys told me that a CGI version will not be provided by the project because it's not needed and pointed me to a page which describes shortly how to setup the tool-chain to do a cross compile of PHP.

Cross Compiling
So I tried to compile PHP myself. I have a Linux box at home so I'm quite familiar with doing configure/make and all this things but the last time I dug into C sources and header files is approx. 10 years back. So this was quite a challenge. Finally I got it working, but I think I did a lousy job. So if somebody can do it better, please go ahead and send me the php-cgi binary.

The CGI Handler
After I had the binary I extended and changed the CGI handler that is included with Brazil to work with Android. Due to some changes in the Brazil source that I have done concerning upload size limits the original handler could not be used. In the process I also tried to add SL4A support. I haven't tested this until know, but I hope it will be working.

SL4A Support
SL4A support is a little bit tricky, because one has to know the port the SL4A is listening to. So I looked around how to get hold of the port and found out that the port is reported in the logcat.
So on startup of the handler (on start of the PAW service) the handler looks into logcat and tries to find the SL4A host name and port number. These values are associated with the AP_HOST and AP_PORT environment variables. So SL4A the server has to be started shortly before PAW starts up.

The Plugin
PHP will be available as plugin shortly after the next release of PAW (which should be in the next month). PAW will then come with the new handler. Providing PHP as plugin has the advantage that PAW itself does not grow (much) in size. PHP is approx. 3 MB in size and so relatively large.
The plugin can be downloaded from an external website and extracted into the PAW plugin folder.
A new page showing available plugins will be included into the next PAW release.

Plugins in the Add-Ons menu


After extracting the plugin it should be visible under PAW's plugin menu.

Plugin in the Plug-ins menu


Installation of PHP should be a one click action and after a restart of PAW PHP should be available.

PHP Installation

PHP has been tested using a Google Nexus One and a Notion Ink Adam. The result of phpinfo() can be viewed here.

This is work in progress but it looks promising although not all PHP pages will be working but basic stuff should.

So stay tuned, I hope to finish this in a couple of weeks :)

Note:
PAW for Android 0.58 is now available at the Android Market.
The PHP plug-in is also available.

Update
If you have trouble downloading the PHP plugin from the original location, you can try the alternate link at Google Drive: PAW Plugins

92 comments:

  1. hi is it possible to install extensions to make connections with mysql or soap

    ReplyDelete
  2. Extensions might work (haven't tried it), so IMHO they have to be compiled for ARM.
    I'm not very familiar with PHP. Used it on a couple of occasions for simple stuff but not more.
    No idea how to enable mySQL support. If you know how to do it, let me know.

    ReplyDelete
  3. Will it be possible to add cURL_exec and/or GDlib?

    ReplyDelete
  4. I think modules should work if compiled for ARM processors. Haven't tried. Would be nice if someone could try that.

    ReplyDelete
  5. How about PHP-FPM instead FCGI?

    GD is bundeld with PHP, but you didn't enable it. What was the reason?

    ReplyDelete
  6. The server does not support Fast CGI.
    I'm not using PHP much and I'm not aware of all things that could or should be compiled into the binary.
    If you tell me the configure option I can try to recompile with that.
    If someone wants to take over the part and maintain the plug-in, that's also fine with me.

    ReplyDelete
  7. We tried the php cgi support for PAW on Android. It works great. I was wondering how to enable PEAR / PECL support. Should we recompile PHP CGI or is PEAR / PECL a separate binary that we can run along side the current one. Any help is appreciated.

    ReplyDelete
  8. @svenk9575
    Glad that it's working :)
    I'm really not much into the whole PHP thing.
    If you like, you can send me a mail (jochen [at] fun2code.de). It might be more efficient than discussing it in the blog.

    ReplyDelete
  9. Thanks for for this! It's working great. Very appreciated.

    ReplyDelete
  10. This is amazing!!!! Im hosting phpliteadmin on my phone and managing all my development databases from my desktop.

    ReplyDelete
  11. Yep ! PAW server is a web server for the Android devices.It was just amazing to know that functionality of the phone can be used from a web browser.I heard that latest changes like Internationalization support has been made.

    ReplyDelete
  12. Hi, I'm very much the novice tinkerer with code. I'm wondering if I install paw can I host a PHP/SQL based site ( for example WordPress etc). The basic idea is not to serve publicly, but to make available the functionality to the device user. That is to say build a dynamic site which would be more customisable than any available 'business app'... I've got memento by luckydroid, and mobileBiz (both pro versions), and need a way to take the best of both worlds into one interface... end result being custom built relational database usage in an offline (in field / out of range) scenario, for the purposes of industry specific project surveying/costing, and management. Also keeps sensitive data away from cloud..

    Any thoughts, suggestions, experiences with such a concept other than learning Java and building a specific app to do such a thing/

    ReplyDelete
    Replies
    1. SQLite is supported both for PHP and BeanShell scripts.
      The PHP plugin is not perfect, it has it's problems and limitations.
      If you start from scratch, consider using BeanShell or pre-compiled classes.

      Delete
  13. Replies
    1. If you have specific questions you can contact me directly via mail:
      jochen [at] fun2code.de

      Delete
  14. I can use the ftp functions programing in php?

    ReplyDelete
  15. How to install phpbb ? Not support database :(( (sqlite, mysql, ... not available)

    ReplyDelete
    Replies
    1. Never tried phpbb, but SQLite should be working. At least PHPLiteAdmin works.

      Delete
  16. Hi...I have installed PAW server, but I'm unable to install the PHP setup. Please help. The timezone is not visible, and when I click on install, it stays on the same page.

    ReplyDelete
  17. using, eg, the classic php it generates a folder to use as a local server ..
    In this case, I can execultar page locations.
    And where should I put them in order to run.

    ReplyDelete
  18. PHP setup? Where can I find it? Link seems dead

    ReplyDelete
    Replies
    1. Please try the following link:
      http://rapidshare.com/files/3332837530/php_plugin.zip

      Delete
  19. I would like to add php code into my Xhtml I have read to switch short_open_tag to Off how can i do this in paw server?

    ReplyDelete
  20. I just want to say Jochen a huge - THANK YOU !!!!!!!!!

    ReplyDelete
  21. Please help :'(
    When I went to

    http://192.168.0.129:8080/app/plugins/php_plugin/

    and clicked install , I went to

    http://192.168.0.129:8080/app/plugins/php_plugin/phpinfo.php

    it showed me that

    Got the error: Not Found
    while trying to obtain /app/plugins/php_plugin/phpinfo.php

    But I'm sure that the file exists......what should I do? Thanks!

    ReplyDelete
    Replies
    1. Did you do a server restart?
      If you did and you are still getting the error, please set the loglevel (in server settings) to 5, restart the server and send me the logfile (normally /sdcard/paw/logs/sever.log) to the following mail address: jochen [at] fun2code.de

      Delete
    2. Hello Jochen,
      I have the same problem as described above. The only entry in the server.log is
      # Start of PAW logfile
      Nothing more.

      The server is running well, but PHP-Files are not found. If I change the mime-type for PHP files to "text/html" in the handler.xml, the PHP files are shown, but without using the PHP interpreter.
      I am using Gingerbread on a system without SD-Card.
      I tried changing the the entries in the php.ini from '/mnt/sdcard' to '/sdcard' (this folder exists and PAW installed itself there) but it always seems like PHP is inactive.
      Can it be that the PHP-Interpreter is copied to a place on the SD-Card that is not existing?

      Peter

      Delete
    3. Hi Peter,

      if you have set the loglevel to 5 and restarted the server there should be something inside the log.
      The PHP binary is copied to the /data/data directory, so that should be fine. What sometimes can happen is, that the permissions are not set correctly.

      What yo can try is to execute the following command inside the BeanShell console:
      exec("ls -l /data/data/de.fun2code.android.pawserver/bin/php-cgi");

      The result should look something like this:
      -rwxr-xr-x u0_a73 u0_a73 13678956 2013-04-17 13:11 php-cgi

      Delete
    4. Hi Jochen,
      you had been right with the rights. I changed them by chmod 755 php-cgi via adb.
      Unfortunately this did not change anything ;-(
      So I tried to set the log level in the conf/server.xml to 5.
      It still said phpinfo.php not found in the browser. But the logfile showed some entries containing [PAW_HOME]. I looked for such entries in the config-files and found them in the conf/handler.xml. So I replaced them with my real path /sdcard/paw.
      Also in the php.ini there had been entries with /mnt/sdcard. As I have no real sdcard but only a folder /sdcard I changed /mnt/sdcard to /sdcard in the php.ini.
      And now it works fine.
      Thanks for your quick help

      Delete
  22. The basic idea is not to serve publicly, but to make available the functionality to the device user.

    ReplyDelete
  23. It still said phpinfo.php not found in the browser. But the logfile showed some entries containing ....

    ReplyDelete
    Replies
    1. Please check the PHP permissions as decribed in a reply above and if the [PAW_HOME] has been replaced inside the conf/handler.xml. If [PAW_HOME] is not replaced, replace it manually with your PAW installation directory (most of the time /sdcard/paw).

      Delete
  24. Hello Jochen,
    it's Peter again ...
    I have a little problem with the server: In 90% of the starts it works perfectly, but in about 10% the server does not start correctly after the system is rebooted.
    The following entries are in the logfile (192.168.10.49 is my PC, 192.168.220.1 ist the android device):

    LOG: 4 9000-server: 192.168.10.49: new connection
    LOG: 3 9000-192.168.10.49-5: Request 24 GET /index.php HTTP/1.1
    LOG: 5 9000-192.168.10.49-5: main.: invoking handler: cookieSessionHandler
    LOG: 4 9000-192.168.10.49-5: cookieSessionHandler.: Using cookie: 7bqhrh1vrdub618031cdfb
    LOG: 5 9000-192.168.10.49-5: main.: invoking handler: auth
    LOG: 5 9000-192.168.10.49-5: main.: invoking handler: phpCgiHandler
    LOG: 5 9000-192.168.10.49-5: phpCgiHandler. suffix=.php root=/data/html url: /index.php
    LOG: 5 9000-192.168.10.49-5: phpCgiHandler. looking for: /data/html/index.php
    LOG: 5 9000-192.168.10.49-5: phpCgiHandler. command= /data/data/de.fun2code.android.pawserver/bin/php-cgi -c /sdcard/paw/html/app/plugins/php_plugin/conf /data/peter/html/index.php
    LOG: 5 9000-192.168.10.49-5: phpCgiHandler. ENV= [HTTP_HOST=192.168.220.1:9000, HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0, HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, HTTP_ACCEPT_LANGUAGE=de-de,de;q=0.8,en-us;q=0.5,en;q=0.3, HTTP_ACCEPT_ENCODING=gzip, deflate, HTTP_DNT=1, HTTP_CONNECTION=keep-alive, HTTP_COOKIE=cookie=7bqhrh1vrdub618031cdfb; PHPSESSID=dbd08e8307d2f5060829eb92e7cad83b, GATEWAY_INTERFACE=CGI/1.1, SERVER_SOFTWARE=Mini Java CgiHandler 0.3, SERVER_NAME=127.0.0.1, SCRIPT_FILENAME=/data/peter/html/index.php, PATH_INFO=, SCRIPT_NAME=/index.php, SERVER_PORT=9000, REMOTE_ADDR=192.168.10.49, PATH_TRANSLATED=/data/peter/html, REQUEST_METHOD=GET, SERVER_PROTOCOL=HTTP/1.1, QUERY_STRING=, SERVER_URL=http://192.168.220.1:9000, REDIRECT_STATUS=200, TMPDIR=/data/peter/temp]
    LOG: 3 9000-192.168.10.49-5: request done
    LOG: 3 9000-192.168.10.49-5: Error: 408 Request Time-out: null
    LOG: 4 9000-192.168.10.49-5: socket close
    LOG: 4 9000-Thread-10: server: PAW Server started on port 9000
    LOG: 5 9000-server: main.: starting handler: cookieSessionHandler
    LOG: 5 9000-server: main.: starting handler: auth
    LOG: 5 9000-server: main.: starting handler: phpCgiHandler

    If the Paw-server does not start, I also cannot start it manually with your app. The app says, the server is running (though it does not), after I stop the server it says it is stopped, but when I want to restart it, an error message apears that the server could not be started and that I should contact android@fun2code.de (that's what I'm doing right now).
    Do you have a solution?

    Thanks,
    Peter

    ReplyDelete
  25. I see permission error when unzipping the php zip. Do I need to root to unzip?

    ReplyDelete
    Replies
    1. The recommended way is to unpack the ZIP on a PC and then to copy it into the paw/html/app/plugins folder on your Android device.
      Root is not required.

      Delete
  26. iam try to put flv file on directory. but if i open, show error below :

    Got the error: Not Found
    while trying to obtain /test/wap/video.flv

    how to fix it?

    Thanks

    ReplyDelete
  27. Are you sure, that the path is correct?
    Can you store on /test? Shouldn't that be /sdcard/test?

    ReplyDelete
  28. solved, add video/x-flv flv on Mymetypes.

    Thank bro, Paw is awesome

    ReplyDelete
  29. Hi, I am trying to set a mimetype so html and htm files are interpreted as php files. I have had theses mimetypes

    text/html
    application/x-httpd-php html htm
    application/x-httpd-php5 html htm

    But my html files are still interpreted as html. (php files are running ok).

    When I log 5 i can see that:

    LOG: 3 8080-10.3.0.57-103: Request 24 GET /som/13999dev2/ HTTP/1.1LOG: 4 8080-server: 10.3.0.57
    : new connection
    LOG: 5 8080-10.3.0.57-103: main.: invoking handler: cookieSessionHandler
    LOG: 4 8080-10.3.0.57-103: cookieSessionHandler.: Using cookie: 64ou55qmuh71e18k4fepk4
    LOG: 5 8080-10.3.0.57-103: main.: invoking handler: auth
    LOG: 5 8080-10.3.0.57-103: main.: invoking handler: phpCgiHandler
    LOG: 5 8080-10.3.0.57-103: phpCgiHandler. suffix=.php root=/storage/emulated/0/paw/html url: /som/13999dev2/
    LOG: 4 8080-server: 10.3.0.57: new connection
    LOG: 5 8080-10.3.0.57-103: phpCgiHandler. looking for: /storage/emulated/0/paw/html/som
    LOG: 5 8080-10.3.0.57-103: phpCgiHandler. looking for: /storage/emulated/0/paw/html/som/13999dev2
    LOG: 5 8080-10.3.0.57-103: phpCgiHandler. looking for: /storage/emulated/0/paw/html/som/13999dev2
    LOG: 4 8080-server: 10.3.0.57: new connection
    LOG: 5 8080-10.3.0.57-103: main.: invoking handler: nativemapper
    LOG: 5 8080-10.3.0.57-103: nativemapper.: No mapping found for URL: /som/13999dev2/
    LOG: 5 8080-10.3.0.57-103: main.: invoking handler: bsh
    LOG: 5 8080-10.3.0.57-103: bsh.: Looking for file: (/storage/emulated/0/paw/html)(/som/13999dev2/)
    LOG: 4 8080-10.3.0.57-103: bsh.: no such file: /storage/emulated/0/paw/html/som/13999dev2/index.xhtml
    LOG: 5 8080-10.3.0.57-103: main.: invoking handler: filehandler
    LOG: 5 8080-10.3.0.57-103: filehandler.: Looking for file: (/storage/emulated/0/paw/html)(/som/13999dev2/)
    LOG: 3 8080-10.3.0.57-103: request done
    LOG: 4 8080-10.3.0.57-103: socket close

    Correct me if I am wrong but it seems like phpCgiHandler is only looking for .php files.

    LOG: 5 8080-10.3.0.57-103: phpCgiHandler. suffix=.php root=/storage/emulated/0/paw/html url: /som/13999dev2/

    Please help. =)

    ReplyDelete
    Replies
    1. Mimetype definition is not important regarding CGI execution.
      Have a look at the /sdcard/paw/conf/handler.xml file and especially at the PHP handler definition. There you should find the file extension.

      Delete
    2. Ok i had

      param name="phpCgiHandler.suffix" value=".php"

      Then I changed it to look like this (just for testing)

      param name="phpCgiHandler.suffix" value=".html"

      and unfortunately my .html files are still not interpreted as php files.

      Is there a better way to do this?

      Delete
    3. Strange, that worked for me.
      Did you restart the server after changing the configuration?

      Delete
    4. Ok its working now. Your solution was correct, I just had some problems with writting permissions on the device witch cause the file handler.xml to be unchanged.

      tks alote for your help!

      Delete
  30. I am just wondering if you can publish a sample PHP code snippet to explain how to call PAW server functions via PHP (e.g. from Raspberry Phi)...
    Cool would be a code sample for calling "text to speech"...
    Thanks!

    ReplyDelete
  31. There is no Android API integration into PHP. As with any other language the PHP binary will run in a separate process and not inside the Dalvic VM.
    What you can do is to write a BeanShell script, included in a xhtml file, and to call that page from your PHP script.

    ReplyDelete
  32. Thanks Jochen.
    Maybe I haven't been precise enough in specifying my question:
    If e.g. I want let "to talk" my android 'Hello John, welcome back again" device having installed PAW server, can I call my android device via HTTP call like
    http://192.168.0.22:8080/urlparser.php?saytext='Hello John, welcome back!'&lang='EN'
    So to call any of the functions provided by PAW Server via simple HTTP calls...
    Sorry for being so stupid but I am not very familiar with all this stuff.
    BTW - PAW Server is a great piece of software - many thanks to you!

    ReplyDelete
    Replies
    1. This won't work with PHP because it can't use the Android API.
      The following should work...

      Create a xhtml file (e.g. /sdcard/paw/html/speak.xhtml) and put in the following content:

      <bsh>
      speak(parameters.get("saytext"), new Locale(parameters.get("lang")));
      </bsh>

      Now you can call the file like this:
      http://:8080/speak.xhtml?saytext=Hello%20John,%20welcome%20back!&lang=EN

      Delete
    2. OK works like a charm. There is now only one question left:
      Is there also a similar approach form playing an MP3 file on base of a HTTP call?
      Thanks!

      Delete
    3. You can use the Android Mediaplayer API.
      The following code will play the first 10 seconds of a MP3 and accepts the file name as parameter "mp3":


      import android.media.MediaPlayer;

      r = new Runnable() {
      public void run()
      {
      mp = new MediaPlayer();

      mp.setDataSource(parameters.get("mp3"));
      mp.prepare();
      mp.start();
      // Play first 10 seconds
      while(mp.getCurrentPosition() <= 10*1000) {
      Thread.sleep(1000);
      }
      mp.stop();
      mp.release();
      }
      };
      t = new Thread(r);
      t.start();

      Delete
    4. Works perfect! Last question, how can I submit the time length via parameter?

      Delete
    5. You can use something like this:

      len = Integer.valueOf(parameters.get("length"));

      Delete
    6. Thanks, works so far. I modified the script for the case, length is not specified, but the script isn't working if not length parameter is specified. What wrong with that?

      import android.media.MediaPlayer;

      r = new Runnable()
      {
      public void run()
      {
      mp = new MediaPlayer();

      // Play first 10 seconds if length is missing;
      len = 10;

      mp.setDataSource(parameters.get("mp3"));
      mp.prepare();
      mp.start();
      if (Integer.valueOf(parameters.get("length")) != null) len = Integer.valueOf(parameters.get("length"));

      while(mp.getCurrentPosition() <= len*1000) {
      Thread.sleep(1000);
      }
      mp.stop();
      mp.release();
      }
      };
      t = new Thread(r);
      t.start();


      Second question: stopping of the current running MP3 isn't possible I think...

      Delete
    7. Third question: How can I "wake" the display of the device?

      Many thanks in advance!

      Delete
    8. That's not possible. You would need Device Administrator permissions which the app does not have.

      Delete
    9. Change the following line and the code should work:

      if (parameters.get("length") != null) len = Integer.valueOf(parameters.get("length"));


      To stop old mediaplayer instances store them into the server scope and stop old ones before starting a new mediaplayer.
      Server scope is used like this:

      serverPut(key, object);
      serverGet(key);

      Delete
    10. Thanks - no wake of display :-(
      OH - the problem with the script is: it IS working when length is specified at URL but it just plays the MP3 for ONE second if length is NOT SPECIFIED. Seems something with the initial assignment of the value of 10 to the variable len is wrong....

      Delete
    11. Hmm... this should work.
      What you can try to do is to add a little more error handling:

      if (parameters.get("length") != null) {
      try {
      len = Integer.valueOf(parameters.get("length"));
      }
      catch(e) { }
      }

      Delete
    12. Thanks - got it. Works now! Great.

      Delete
    13. Hi Jochen, I am currently struggling with serverPut(key, object); and
      serverGet(key); for killing the running mediaplayer task. May I ask you to give a short example on how to apply that? Sorry for being Noob... Cheers

      Delete
    14. Hi,
      can we switch to mail (jochen [at] fun2code.de)?
      Otherwise we are filling up the comments.

      Delete
  33. Hi Juergen, cool! Will try ASAP. Thanks! Martin

    ReplyDelete
  34. Hi, i can't seem to locate the php plugin anywhere. If i click on plug-ins on PAW server I get a timed out message as follows: The server at notavailable.goneo.de is taking too long to respond. The RapidShare link says file not found. Could you tell me where I could get it please. Thanks. Jay

    ReplyDelete
    Replies
    1. Uploaded all PAW plugins to Google Drive: http://goo.gl/Rpc0Yu

      Delete
    2. Thanks Jochen for the quick response. Jay

      Delete
  35. I had to update the following two files with the correct directory location, otherwise php doesn't install and will give a file not found error, when trying to run phpinfo.php

    /php_plugin/index.xhtml
    from> pluginPath = pawHome + "/html/app/plugins/" + pluginName;
    to> pluginPath = pawHome + "/html/app/add_ons/" + pluginName;

    /php_plugin/conf/php.ini
    from> include_path = ".:/mnt/sdcard/paw/html/app/plugins/php_plugin/conf"
    to> include_path = ".:/mnt/sdcard/paw/html/app/add_ons/php_plugin/conf"

    Also after extracting the zip to the plugin folder, the php addon did not appear under Add-Ons in the PAW Server.

    You can manually install it this way, just replace the ip address to yours.
    http://192.168.0.3:8080/app/add_ons/php_plugin/

    Now everything works fine. :)

    ReplyDelete
  36. Fahimshakir Freelancer Developer from Delhi-India,You can provide me part time work for Home,Part Time Developer/Freelancer For PHP , WordPress, Magento, Opencart, Shopify, Codeigniter, Website Maintenance in Delhi -india, www.fahimshakir.com

    ReplyDelete
  37. It's really good!
    And now I'd like to run php scripts from other directory. What I have to change and in what files (php.ini or some like it)?

    ReplyDelete
  38. i extracted the php.zip into the plugins folder but nothing happened..!! can u give a hand please...thankx..!!

    ReplyDelete
    Replies
    1. Make sure the folder "php_plugin" is located inside the "/sdcard/paw/html/app/plugins" directory.
      If this is the case, the entry "PHP Setup" should show up inside the "Plugins" menu inside the web application.

      Delete
  39. Thanks for sharing Information
    I m also looking for Woocommerce SMS notification plugin for my small business.

    ReplyDelete
  40. Hi Jochen

    I have a question regarding php_plugin.

    As soon as I try to install gdeasy cms or typesetter cms the server test site which appears during the installation process informs of a problem regarding "SCRIPT_NAME or PHP_SELF". I found some hints for this matter on typesetter forum (https://www.typesettercms.com/Forum?show=t359)and php.net but to be honest I have no idea of php and most likely I won't be able to handle it myself. Please help if You have some spare time.

    ReplyDelete
    Replies
    1. Thanks for the info. This seems to be a PAW bug inside the CGI handler. I'll try to fix that in the next release.

      Delete
  41. This comment has been removed by the author.

    ReplyDelete
  42. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. This comment has been removed by the author.

      Delete
  43. This comment has been removed by the author.

    ReplyDelete

  44. This is best PHP tutorial in youtube. you can learn full coding and also the best expamles in here. This the best of learning and earning ways of youtube.
    You can the full boston php tutorial.

    click here PHP tutorial
    for more youtube tutorials
    website php tutorial for beginners

    ReplyDelete
  45. Hi All,

    I have a question I was hoping you could help me with. I have installed paw and the php plugin, but php does not seem to be allowed to write to the tmp folder. I start a session on page1, set up a few session variables, then on page2 where I try to use those variables I get the error

    Warning: session_start(): open([PAW_HOME]/tmp/sess_d258d99a71525414b4f1001c3b32da5f, O_RDWR) failed: No such file or directory (2) in /storage/emulated/0/paw/html/welcome.php on line 6

    Any ideas? I assumed it was a permissions issue, but the android device I am running paw on is not rooted so I have no way of altering permissions for that folder.

    ReplyDelete
    Replies
    1. Well, I've installed WAMP and tried the same file. No problem whatsoever.

      Delete
    2. Change the file php.ini and replace `[PAW_HOME]` with a real, existing path... for some reason, this part is not parsed and could not get the correct place.

      Delete
  46. Can i integrate your library into my android app which is for commercial use

    ReplyDelete
  47. Plugin doesn't work on ASUS!Is this because of Intel processor?

    ReplyDelete
    Replies
    1. Yes, the plugin won't run on Intel hardware.

      Delete
  48. Wow, nice and interesting article, Thanks for your valuable information and time. it is really helpful to understand and learn for me.
    IOS Training in chennai|Android Training in chennai

    ReplyDelete
  49. In this post the information is about the PAW development. this blog can helping us to understand for what coming next in PAW development.
    than you so much for sharing this post.

    ReplyDelete
  50. I just need a local server to run content offline. Don't even need PHP or MySQL. With PAW installed I can easily run content stored locally, but only when connected to my network. It seems this should be possible with PAW, but not finding instructions on how to do it. What am I doing wrong? Or point me to the instructions I missed.

    Thanks!

    ReplyDelete
  51. Nice article thanks for given this information. i hope it useful to many pepole.more php jobs in hyderabad.

    ReplyDelete

  52. Nice and good post. It is very useful for me. Thanks for sharing your valuable information.
    PHP Training
    PHP Course
    PHP Institute

    ReplyDelete
  53. This comment has been removed by the author.

    ReplyDelete

Note: Only a member of this blog may post a comment.