2009-12-04 18 views
16

में कनवर्ट करें क्या एक PHP फ़ाइल को बाइनरी में परिवर्तित करना और वेबसर्वर पर इसे तैनात करना संभव है?PHP फ़ाइल को बाइनरी

+0

बाइनरी में आपका क्या मतलब है? PHP एक व्याख्या की गई भाषा है, जिसका अर्थ है कि यह लाइन द्वारा लाइन को पढ़ा जाता है और निष्पादित किया जाता है (मोटे तौर पर।) यह सी जैसी बाइनरी फ़ाइल में संकलित नहीं है, आप बस फ़ाइल को एक वेब निर्देशिका में रखते हैं और उपयोगकर्ता को इसे एक्सेस करने की अनुमति देते हैं; बेशक, वेब सर्वर PHP चलाना चाहिए। – Anthony

+6

आप स्रोत कोड को एन्क्रिप्ट करना चाहते हैं और इसे निष्पादन योग्य के रूप में वितरित करना चाहते हैं ताकि कोई भी पुनः उपयोग के लिए कोड चोरी और परिवर्तित नहीं कर सके, है ना? –

+1

वास्तव में .. आप एक प्रश्न पूछने के लिए बेहतर काम नहीं कर सकते हैं? .. कोई विचार नहीं कि आप –

उत्तर

20

चूंकि PHP एक (अपेक्षाकृत) पोर्टेबल भाषा है, इसलिए बाइनरी कोड के बजाय बाइटकोड में PHP स्रोत संकलित करना अधिक बेहतर है। इस उद्देश्य के लिए bcompiler नामक एक प्रयोगात्मक परियोजना है।

+0

धन्यवाद का उपयोग करना चाहिए .. ....................... – Hulk

+0

सड़कों पर भी जाने के बाद, मुझे लगता है कि (मुझे लगता है) phpc के कुछ हिस्सों का उपयोग कर रहा है। –

+0

phc स्थापित करने के लिए एक प्रकार का दर्द है, और php दुभाषिया के माध्यम से फ़ाइलों को चलाने से सड़कों धीमी लगती है। –

1

यह "बाइनरी" से आपका क्या मतलब है इस पर निर्भर करता है।

यदि आप किसी अन्य को संशोधित करने से रोकने के लिए अपने PHP कोड को संकलित करना चाहते हैं (या केवल obfuscate) तो बाइटकोड संकलक का उपयोग करें। उदाहरण के लिए Zend के उपकरण एक उदाहरण हैं। (मैं ज़ेंड के टूल्स को प्राथमिकता देता हूं क्योंकि वे PHP के पीछे प्राथमिक कंपनी और PHP के सभी संस्करणों के खिलाफ पूरी तरह से क्यूए के सभी उपकरण)।

यदि आप अपने PHP कोड को संकलित करना चाहते हैं और PHP रनटाइम को इसके साथ लिंक करना चाहते हैं और फिर इसे तैनात करना (जैसे सी \ सी ++), तो नहीं। शायद सिद्धांत में यह संभव होगा लेकिन यह एक गड़बड़ होगी। (व्यावहारिक या व्यवहार्य नहीं है और ऐसा नहीं लगता कि किसी ने कोशिश करने के लिए कुछ भी रखा है और आउटपुट भी एक विशेष वास्तुकला से बंधेगा)।

+0

धन्यवाद ......................... – Hulk

+2

के बारे में ..................... बहुत सारे बिंदु। – Garrett

1

यदि वेब सर्वर लिनक्स आधारित है, तो आप .deb या .rpm (लिनक्स वितरण के आधार पर) जैसे पैकेज बना सकते हैं और इसे आसानी से वितरित/तैनात कर सकते हैं।

बीआर, डेविड।

+0

क्या आपने कभी प्रश्न पढ़ा है? –

+1

यह एक बुरा जवाब नहीं है। सवाल यह पूछता है कि "मैं php फ़ाइलों को एक वितरित प्रोग्राम में कैसे परिवर्तित करूं"। –

+2

एक PHP फ़ाइल को बाइनरी में कनवर्ट करना एक PHP फ़ाइल को एक वितरित प्रोग्राम में कनवर्ट करना नहीं है। –

10

कुछ महीने पहले मैं इसे (php कोड संरक्षण या स्क्रिप्ट संरक्षण) और मेरे परिणामों के लिए खोज रहे थे:

मैं कुछ विवरण प्रदान लेकिन उन्हें गूगल और मुझे क्षमा करने का प्रयास करें।

अपनी खोज से सावधान रहें क्योंकि आप इसके बजाय PHP कंप्रेसर का सामना कर सकते हैं और कंप्रेसर लगभग GZIP और अन्य http स्थानांतरण संपीड़न तंत्र हैं।

php स्क्रिप्ट के साथ सबसे महत्वपूर्ण मुद्दों उपकरणों की रक्षा कर रहे हैं:

  1. php क्रम प्रदर्शन का कितना गति कम हो जाएगा (नीचे) (कितना नीचे गति)

  2. हम एक की आवश्यकता होगी PHP या पीपी सर्वर पर अतिरिक्त उपकरण या स्थापित उपकरण?

  3. आसान हैंडलिंग

आप पूरे विवरण और पर तुलना के बारे में मिल जाएगा: http://www.seocompany.ca/software/free-encryption-software.html

ऑबफस्केटर

आप वेब पर मिल जाएगा ऑबफस्केटर का एक बहुत है, लेकिन कोई गारंटी नहीं है आपके कोड काम करने के लिए।

यहां तक ​​कि मैं php मुश्किल होता लिए Visual C++ और MSVS साथ एक मिश्रित रास्ता मिल गया और क्योंकि यह भी मैं asp.net के साथ अनुभव कर रहा हूँ मैं इसे हालांकि काम नहीं किया परीक्षण किया गया।

कन्वर्टर्स और लाकर्स

  • आयन रक्षक (http://www.ioncube.com/): ओह मुक्त नहीं है, लेकिन मैं अपने प्रसिद्ध नाम के बारे में कई सुना

  • पीएचसी (php संकलक): नि: शुल्क और एक अच्छा मामला था लेकिन "ब्रेंडन लांग" ने सच कहा क्योंकि phc में एक दर्दनाक स्थापित तरीका है। हालांकि परिणाम जादू है और इसका नाम आयन

  • PHP लॉकर: मुझे मिल गया और इसका परीक्षण किया गया। इसमें संकलित कोड के साथ त्रुटि हुई थी और इसे php5 से कम के लिए जारी किया गया था। बिल्कुल मुफ्त नहीं है और सीसीआर-एसी * केएस के बारे में सोचने के लिए जो इसे PHP लॉकर के लिए ढूंढ रहा है असंभव है।

  • Zend गार्ड: रक्षा करने के लिए एक बढ़िया तरीका है, लेकिन यह पीएचसी या आयन की तुलना में कठिन है, क्योंकि आप अपने सर्वर पर Zend क्रम पर्यावरण (ZRE) की जरूरत है और Zend गार्ड पूरी तरह से गैर मुक्त है, लेकिन अगर आप एक Zend पुरुष हैं (ज़ेंड फ्रेमवर्क + ज़ेंड आईडीई + ज़ेंड गार्ड) आपको पता होना चाहिए कि ज़ेंड गार्ड ज़ेन आईडीई के साथ संगत है और कोड अवरोधन प्रक्रिया इतनी आसान होगी। मैं ज़ेंड लड़का नहीं हूं क्योंकि ज़ेन फ्रेमवर्क और ज़ेंड गार्ड में से कोई भी रनटाइम गति को स्पष्ट रूप से नीचे ले जाता है। मैं php गति से रनटाइम प्यार करता हूँ।

  • php -> C/C++ compiling (हाँ यह संभव है) (दुनिया के माध्यम से सबसे अच्छा प्रदर्शन): यह इतना प्रसिद्ध नहीं है कि अगर कोई बात नहीं करता तो यह सामान्य है।

  • फेसबुक हिप हॉप: यह उपकरण फेसबुक द्वारा उपयोग कर रहा है एक बेहतर प्रदर्शन प्राप्त करने के लिए लेकिन अंत में हम अपठनीय संकलित कोड है C++/सी पर php फ़ाइलें संकलित करने के लिए। मैं remeber नहीं है, लेकिन मुझे लगता है कि यह लिनक्स या Microsoft Visual C++ पर php recompile तंत्र के बारे में अच्छी परिचितता की आवश्यकता है। (हालांकि मेरी कमजोर स्मृति के लिए भरोसा नहीं करते हैं और यह गूगल)

अंत में मैं अपने स्वयं सरल php अस्पष्टकर्ता नियमित अभिव्यक्ति का उपयोग किया (और पीएचपी RECOMPILE रास्ता PLZ के बारे में सीखने के लिए php_manual.chm की नवीनतम रिलीज को देखें) जो PHP 5.3 और मेरी जटिल स्क्रिप्ट पर काम करता था, इसलिए मैं OpenSSL और विभिन्न एन्क्रिप्शन तंत्र पर चला गया और PHP सुरक्षित विकास पर समीक्षा प्राप्त की।

आपको सफल होना चाहते हैं।

2

यह रास्ता अतिदेय है लेकिन आप जो चाहते हैं उसे करना चाहिए।

ज़ेन इंजन के साथ अपना स्वयं का कस्टम एक्सटेंशन बनाएं क्योंकि वे एक C++ dll को संकलित करते हैं। Php निर्देशिका में अपने ext location में उस डीएल जोड़ें। उसके बाद आप php फ़ंक्शन के रूप में अपनी स्वयं की PHP स्क्रिप्ट को कॉल कर सकते हैं। ध्यान रखें कि PHP केवल सर्वर पक्ष है इसलिए कोई भी आपकी स्क्रिप्ट प्राप्त नहीं कर सकता है जब तक कि वे सर्वर से कॉपी नहीं किए जाते हैं और सौंपे जाते हैं।

आपके पास संस्करण के लिए PHP स्रोत लाइब्रेरी डाउनलोड करें। [windows.php.net] आपको आवश्यक ज़ेंड सामग्री शामिल की जाएगी।

चरण 1. एक नई परियोजना बनाएं और विजुअल सी ++ और खाली प्रोजेक्ट विकल्प के तहत "सामान्य" चुनें। इसे एक नाम दें और ठीक क्लिक करें। मेरा प्रोजेक्ट 1 है इसलिए मैं इसका इस्तेमाल करूँगा।

चरण 2. समाधान नाम पर राइट क्लिक करें और गुण चुनें। गतिशील पुस्तकालय का चयन करें (।डीएलएल) विन्यास गुण/सामान्य आइटम में परियोजना डिफ़ॉल्ट/कॉन्फ़िगरेशन प्रकार के तहत। सुनिश्चित करें कि आप डीबग कॉन्फ़िगरेशन को बदल रहे हैं क्योंकि रिलीज़ का उपयोग नहीं किया जाता है।

चरण 3. तहत कुलपति ++ Directiories शामिल पुस्तकालयों के तहत निम्नलिखित जोड़ें: C: \ php-7.1.8-src \ Zend C: \ php-7.1.8-src \ Win32 C: \ php- 7.1.8-src \ TSRM C: \ php-7.1.8-src \ मुख्य C: \ php-7.1.8-src पुस्तकालय: C: \ php-7.1.8 \ देव

चरण 4. सी/सी ++ प्रीप्रोसेसर के तहत जेड END_DEBUG = 0; जेडटीएस = 1; जेड END_WIN32; प्रीप्रोसेसर परिभाषाओं के लिए PHP_WIN32

चरण 5. लिंकर इनपुट के तहत php7ts.lib जोड़ें। इसे PHP के अपने संस्करण के लिए lib की आवश्यकता है

अपने समाधान के लिए संपत्ति सेटिंग्स को सहेजने के लिए ठीक क्लिक करें।

अब आप अपने समारोह (Project1)

स्रोत फ़ाइलों के तहत के लिए एक कोड फ़ाइल जोड़ने राइट क्लिक फ़ोल्डर और कोड जोड़ सकते हैं। मैंने मेरा प्रोजेक्ट 1.cpp कहा और यहां स्रोत है। आपको config.w32.h.in को config.w32.h.in पर पुनर्नामित करने की आवश्यकता होगी और इसे उन निर्देशिकाओं में कॉपी करें जहां इसकी आवश्यकता है। Intellisense आपको बताएगा कि यह कहां देख रहा है और config.w32.h.in सी: \ php-7.1.8-src \ win32 निर्देशिका में है।

// this needs to match the compiler version that php was compiled with 
#define _CRT_SECURE_NO_WARNINGS 
#define PHP_COMPILER_ID "VC14" 

#pragma once 
/* You must include config.w32.h first */ 
#include "win32/config.w32.h" 

#include "php.h" 

ZEND_FUNCTION(ReturnString); 

zend_function_entry Project1_functions[] = 
{ 
    ZEND_FE(ReturnString, NULL) 
    { 
     NULL, NULL, NULL 
    } 
}; 

zend_module_entry Project1_module_entry = 
{ 
    STANDARD_MODULE_HEADER, 
    "Project1 Module", 
    Project1_functions, 
    NULL, NULL, NULL, NULL, NULL, 
    NO_VERSION_YET, STANDARD_MODULE_PROPERTIES 
}; 

ZEND_GET_MODULE(Project1) 

ZEND_FUNCTION(ReturnString) 
{ 
    zval* value; 

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &value) == FAILURE) 
    { 
     RETURN_FALSE; 
    } 

    convert_to_string(value); 

    RETURN_STRING(Z_STRVAL_P(value), true); 
} 

संकलित करने के लिए F7 दबाएं और इसे Project1 \ Debug \ Project1.dll बनाना चाहिए। प्रोजेक्ट 1 को अपनी बाहरी निर्देशिका सी: \ php-7.1.8 \ ext में कॉपी करें और अपने php.ini में एक्सटेंशन = Project1.dll जोड़ें और आपको जाने के लिए अच्छा होना चाहिए। यदि यह सुनिश्चित करने के लिए कि आप कुछ याद नहीं करते हैं, तो यह दो बार काम नहीं करता है।

The script is quite simple: 

<?php 
echo ReturnString("The Returning String"); 
?> 
संबंधित मुद्दे