Hướng dẫn cài đặt IonCube php extension trên Heroku - Tưởng không dễ mà dễ không tưởng

Search for a command to run...

No comments yet. Be the first to comment.
Ngoài pentest, hệ thống cần được kết hợp thêm nhiều các dịch khác nhằm tăng cường góc nhìn, tăng tính phản biện cho quá trình tìm lỗ hổng.

Recently, I have done a big update in RequestBin and release a new version called Next-Gen RequestBin. Now, let’s take a look at the 3 main features in this version. 1. Support both DNS and HTTP on an unique ID In this version, I have combined DNSBin...

Cách đây khoảng vài tháng, không hiểu vì lý do gì tôi không còn truy cập được trực tiếp dịch vụ Medium, hỏi han bạn bè thì mọi người cũng bị tình trạng tương tự. Cũng may tôi chưa xuống tiền mua gói membership không thì chắc khóc ròng mất mấy tháng. ...

Nếu người dùng từ Medium hay Ghost chuyển sang Medium, chắc hẳn bạn cũng sẽ như tôi, rất khó chịu về việc căn lề trái mặc định của editor. Mọi thứ bị xô lệch, cả chữ lẫn ảnh nhìn rất khó chịu. Kích hoạt tính năng tùy chỉnh giao diện Rất may một tr...

Tôi là 1 fan của Heroku vì tính tiện dụng và đặc biệt là giá trị của nó đối với các developer và các ứng dụng nhỏ. Tuy nhiên, gần đây tôi có phát triển dự án CVEData, dự án này đòi hỏi mức độ dữ liệu lớn và các gói của Heroku có vẻ không còn hợp lý n...

Tôi vốn là một Fan của Heroku nên mỗi khi deploy một ứng dụng web nào đấy tôi liền nghĩ ngay đến Heroku - vì nó miễn phí mà lại cloud :~) Lần này tôi tình cờ deploy một ứng dụng PHP nhưng cần phải dùng một php extension không có sẵn -IonCube. "Tưởng không dễ mà dễ không tưởng" chính xác phù hợp cho trường hợp này.
Cho ai cần tìm hiểu về cách deploy một ứng dụng PHP trên Heroku có thể tham khảo thêm tại https://devcenter.heroku.com/articles/getting-started-with-php#deploy-the-app (build thêm web pack heroku-buildpack-php) hoặc 1 list các App có sẵn tại https://elements.heroku.com/search/buttons?q=php

Tương tự Ruby, Python, để deploy trên Heroku cũng cần sử dụng Composer tương tự với Gem và Pip. Heroku chỉ hỗ trợ mặc định một số Extension có sẵn cho PHP (https://devcenter.heroku.com/articles/php-support#extensions). Và muốn dùng extension khác thì phải dùng repositive bên thứ 3 hoặc tự build repositive theo hướng dẫn của Heroku.

Tưởng không dễ vì đọc topic của Heroku về cách build, cũng loằng ngoằng phết, làm theo, thử đi thử lại bao nhiêu lần chẳng hiểu sao toàn fail (mất toi 2 ngày trời!) - https://github.com/heroku/heroku-buildpack-php/blob/master/support/build/README.md
Tuy không thành công nhưng cũng tốt vì vỡ ra nhiều điều, hiểu thêm về kiến trúc build trên Heroku, có cơ hội tôi sẽ viết thêm sau.
Đến khi hầu như không còn hi vọng gì, định xuống tiền cho Google với Amazon rồi thì tia sáng lóe lên. Ông Heroku này bản chất chạy docker, vì vậy cấu hình hay extension gì cứ copy sẵn ở bản local rồi commit lên là sẽ có, không nhất thiết phải cài đặt theo kiểu composer. Vì vậy tôi tìm ra cách dễ không tưởng.
Bước 1: Download bản build sẵn của extension
Trong trường hợp này là Ioncube thì cứ lên trang chủ down về thôi (https://www.ioncube.com/loaders.php). Nhớ download đúng bản tương ứng với stack sử dụng ở Heroku (Ubuntu là ok - https://devcenter.heroku.com/articles/stack-packages)
Bước 2: Giải nén và copy vào đường dẫn trên local tương ứng với thư mục của php extension. Trường hợp này là:
mkdir -p .heroku/php/lib/php/extensions/no-debug-non-zts-20180731/
Bước 3: Copy file config ioncube vào thư mục ini của php.d
echo "zend_extension = /app/.heroku/php/lib/php/extensions/no-debug-non-zts-20180731/ioncube_loader_lin_7.3.so" > .heroku/php/etc/php/conf.d/00-ioncube.ini
Bước 4: Commit và chờ thành quả

Ảnh: Dùng script loader có sẵn của Ioncube để check
Chúc các bạn thành công!