Let’s Exciting on Your
      Own PHP!
         Kousuke Ebihara
     <ebihara@tejimaya.com>
4           OpenPNE 3.2    3.4



•       (^o^)

•
•   OpenPNE                      PHP



•

    •            (Ebinglish)...
Go to our main topic...
My “php -i”
My “phpinfo()”
Let’s Exciting on Your Own PHP

Why do I want to get my own PHP ?
What for?


• Improving my work
• Just for fun
Use 5.3. And 5.2
• You should use PHP 5.3 for your
  developing, if you know about backward
  incompatible changes in the ...
But then ...
•   Do you know about the following script is not
    work under PHP 5.2? Why?
Result
Oh, it is just a bug!




http://bugs.php.net/bug.php?id=45820
Fixed ... ?
Trace changes

• From 16 Jul 2009, PHP is hosted on SVN
  and there is a GitHub mirror!
• So you can trace some changes in...
Fixed only in PHP 5.3?
View changes
In PHP 5.2




 So dreadful...
Talk about something
        else
•   I’ve written the following code by an oversight in
    template (But it is only work...
A developer of Debian
has the interesting patch

• The patch makes the PHP 5.3 notify
  E_DEPRECATED error if the script u...
Unfortunately, the patch
  may be rejected ...

• [PHP-DEV] Throwing an E_DEPRECATED
  for short_open_tag
  http://marc.in...
So I want to get
        the following PHP 5.3
       for improving my work


• Notify errors to code that doesn’t work
  ...
I thought of...


• creating my own PHP!
Let’s Exciting on Your Own PHP

Build PHP
Knowing the way to
build PHP is important
• You can build many variations of PHP by
  your needs
• You can test your scrip...
Prepare to build PHP
•   Here we get source code from Git repository for our customizing
    •   http://github.com/php/php...
Prepare configuring
(only for SVN and Git version)
• SVN and Git version of PHP don’t have
  something to configure
• So you...
Configure PHP
• You can see the available configure options
  by executing “./configure --help”


• Some options is for exten...
My configure options
•   http://gist.github.com/277126
    •   ./configure --enable-mbstring
         --with-apxs2=/usr/bin/...
Make and Install
• Do make
• Do make test (I always pass it)
• Do make install
 • Compiled php is in sapi/* .You can copy
...
Let’s Exciting on Your Own PHP

Customize PHP
For my working
Add original error level
 • I want to add “EE_COMPAT_52” and
   “EE_ENV_DEP”
  • EE_COMPAT_52 is for notify...
For my working
Add original error level
•   I referred adding E_DEPRECATED commit
    •   $ git log --grep=”E_DEPRECATED”
...
For my working
Add original error level
 •   Now, I have a patch for realizing this
     •    Adding EE_COMPAT_52 and EE_E...
For my working
Add original error level
For my working
Add original error level
For my working
Add original error level

• I want to add notices based on
  http://www.php.net/manual/ja/
  migration53.de...
For my fun
Insertion ;
For my fun
                Insertion ;
•   ;

    •   ECMA Script
                  (Automatic Semicolon Insertion)




  ...
For my fun
    Keyword Arguments
•      RSS
For my fun
 Keyword Arguments
• Python
Question?
Let's creating your own PHP (tejimaya version)
Upcoming SlideShare
Loading in...5
×

Let's creating your own PHP (tejimaya version)

1,766

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,766
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Let's creating your own PHP (tejimaya version)

    1. 1. Let’s Exciting on Your Own PHP! Kousuke Ebihara <ebihara@tejimaya.com>
    2. 2. 4 OpenPNE 3.2 3.4 • (^o^) • • OpenPNE PHP • • (Ebinglish) •
    3. 3. Go to our main topic...
    4. 4. My “php -i”
    5. 5. My “phpinfo()”
    6. 6. Let’s Exciting on Your Own PHP Why do I want to get my own PHP ?
    7. 7. What for? • Improving my work • Just for fun
    8. 8. Use 5.3. And 5.2 • You should use PHP 5.3 for your developing, if you know about backward incompatible changes in the version • Some code for PHP 5.2 may not work under PHP 5.3 :( But the other way around if you are careful. • Use 5.2 when you worry about your script. (So must ready to use PHP 5.2!)
    9. 9. But then ... • Do you know about the following script is not work under PHP 5.2? Why?
    10. 10. Result
    11. 11. Oh, it is just a bug! http://bugs.php.net/bug.php?id=45820
    12. 12. Fixed ... ?
    13. 13. Trace changes • From 16 Jul 2009, PHP is hosted on SVN and there is a GitHub mirror! • So you can trace some changes in your git clone easy • Let’s tour through changes by using Git
    14. 14. Fixed only in PHP 5.3?
    15. 15. View changes
    16. 16. In PHP 5.2 So dreadful...
    17. 17. Talk about something else • I’ve written the following code by an oversight in template (But it is only worked in “short_open_tag=1” environment): <?= $var ?> • And I’ve written the following code too (But it is only worked in “short_open_tag=0” environment): <?xml version=”1.0” encoding=”utf-8”?> <?php if ($flag): ?> :
    18. 18. A developer of Debian has the interesting patch • The patch makes the PHP 5.3 notify E_DEPRECATED error if the script uses short open tags (c.f. debian git repository) • If the feature had been in PHP, I wouldn’t have gotten the mentioned error.
    19. 19. Unfortunately, the patch may be rejected ... • [PHP-DEV] Throwing an E_DEPRECATED for short_open_tag http://marc.info/?t=126334748600001 • But I really need it!
    20. 20. So I want to get the following PHP 5.3 for improving my work • Notify errors to code that doesn’t work under the php 5.2.x • Notify to environment dependency code (e.g. short_open_tag)
    21. 21. I thought of... • creating my own PHP!
    22. 22. Let’s Exciting on Your Own PHP Build PHP
    23. 23. Knowing the way to build PHP is important • You can build many variations of PHP by your needs • You can test your script under the specified version of PHP (e.g. array_unique() is breaked BC only in PHP 5.2.9)
    24. 24. Prepare to build PHP • Here we get source code from Git repository for our customizing • http://github.com/php/php-src • See http://www.php.net/manual/ja/install.unix.php and http://www.php.net/svn.php • Combinations of “autoconf”, “automake” and “libtool” is very important.You may get older version of them by your hand • If you want to compile Git or SVN version of PHP 5.2, you must prepare flex 2.5.4 • Some program may be not used if you using packaged PHP (because it contains pre-generated files) • If you want to use Git version of PHP, please get latest git and git-svn (I got errors by using git 1.6.5) • Of course, you must prepare some packages needed by extensions that you want to use
    25. 25. Prepare configuring (only for SVN and Git version) • SVN and Git version of PHP don’t have something to configure • So you should execute “./buildconf” • Make sure that you use certain version of autoconf, automake and libtool. For example, I specified autoconf and autoheader to use (in Debian sid)
    26. 26. Configure PHP • You can see the available configure options by executing “./configure --help” • Some options is for extension (enable-xxx, disable-xxx, with-xxx, without-xxx). So you don’t need to be afraid of options if you know about your needed extensions • Build PHP many times is normal
    27. 27. My configure options • http://gist.github.com/277126 • ./configure --enable-mbstring --with-apxs2=/usr/bin/apxs2 --with-gd --with-mysql --with-pgsql --with-pdo-mysql=/usr --with-pdo-pgsql --with-pdo-sqlite --with-pear --with-jpeg-dir=/usr/lib --with-curl --with-zlib • If you want to use multiple php, you may want to add --with-config-file-path
    28. 28. Make and Install • Do make • Do make test (I always pass it) • Do make install • Compiled php is in sapi/* .You can copy the binaries or intermediate files by your hand
    29. 29. Let’s Exciting on Your Own PHP Customize PHP
    30. 30. For my working Add original error level • I want to add “EE_COMPAT_52” and “EE_ENV_DEP” • EE_COMPAT_52 is for notifying “it may not be working under the php 5.2.x“ • EE_ENV_DEP is for notifying “it may be environment depended code” • EE_ is Ebi_Error
    31. 31. For my working Add original error level • I referred adding E_DEPRECATED commit • $ git log --grep=”E_DEPRECATED” • I must rewrite: • Zend/zend_errors.h : define constants • Zend/zend.c : zend_error() • Zend/zend_constants.c : zend_register_standard_constants() • main/main.c : php_error_cb() • And notify the new error by zend_error() (in Zend Engine) and php_error_docref (in PHP)
    32. 32. For my working Add original error level • Now, I have a patch for realizing this • Adding EE_COMPAT_52 and EE_ENV_DEP • http://github.com/ebihara/php-src/commit/ 2fdd6fe27188ad3c5878b1fd3a8229e35f84d8fd • Notice to <? • http://github.com/ebihara/php-src/commit/ e6706d2b9a576cd81991868d9a8522ba50c37593 • Notice to $list[‘’] = ‘’; • http://github.com/ebihara/php-src/commit/ 1e9484ad04ca03b340bdd51d1f39acee32b86182
    33. 33. For my working Add original error level
    34. 34. For my working Add original error level
    35. 35. For my working Add original error level • I want to add notices based on http://www.php.net/manual/ja/ migration53.deprecated.php • Any idea?
    36. 36. For my fun Insertion ;
    37. 37. For my fun Insertion ; • ; • ECMA Script (Automatic Semicolon Insertion) • } •
    38. 38. For my fun Keyword Arguments • RSS
    39. 39. For my fun Keyword Arguments • Python
    40. 40. Question?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×