কীভাবে আমি আপাচিকে বলব কোন পিএইচপি ব্যবহার করতে হবে?


34

আমি দৌড়াচ্ছি apache2 একটি উপর Mac OS X এর (10.5) । আমি কেবল পিএইচপি 5.2.8 সংকলন করেছি এবং শেষ পর্যন্ত pdo-mysqlকাজ পেয়েছি (বা তাই আমি মনে করি)।

এই টার্মিনাল কমান্ড:

php --version

5.2.8 দেখাচ্ছে এবং আমি সঠিক মডিউল ইনস্টল করা আছে।

কিন্তু যখন আমি একটি না phpinfo(), এ্যাপাচি আউট ডাম্প পিএইচপি 5.2.6 (আমার পূর্ববর্তী সংস্করণ ছাড়া pdo_mysql)।

আমি কীভাবে আপাচে বলব কোন পিএইচপি লোড করতে হবে? httpd.confলাইন আছে:

LoadModule php5_module        libexec/apache2/libphp5.so

তবে, আমি জানি না সে কী বা কোথায়।

আমার কি তা বদলাতে হবে?


আপনি যখন পিএইচপি সংকলন করেছেন আপনি কি মেক ইনস্টল ব্যবহার করেছেন? আপনি যদি সেই পথটি খুঁজে পান যা এটি আপনার মডিউলটি ইনস্টল করে এবং এটিতে আপনার অ্যাপাচি কনফিগারেশনে পরিবর্তন করে। ম্যাকের নিজস্ব সংস্করণ অ্যাপাচি এবং পিএইচপি 5 ইতিমধ্যে ইনস্টল রয়েছে যার কারণে আপনি ভিন্ন সংস্করণটি দেখছেন।
রাগগুলি


হোমব্রিউ ব্যবহারকারীগণ, @ মিক মন্তব্য দেখুন
ব্যাটারিএসিড

1
আপনি কি আপনার সমস্যা সমাধান করেছেন? সমস্ত উত্তর কেবল পাগল জিনিস
পিম্পার

এই প্রতিক্রিয়াগুলির কোনওটিরই প্রশ্নের উত্তর নেই। এই উদ্ভট হচ্ছে ...
কোয়ান্ট

উত্তর:


14

আমি মনে করি এই সমস্ত উত্তর সত্যিই প্রশ্নের উত্তর দিচ্ছে না। কমান্ডটি চালিয়ে রুট স্তর নির্ধারণ করা যেতে পারে httpd -V। এটি আপনাকে দেখায় যে সংকলনের সময় অ্যাপাচি ডেমনটি কী অপশন দ্বারা নির্মিত হয়েছিল। এটি httpdকনফিগার করে কোথায় কোথায় তা নির্ধারণ করে তা নিয়ন্ত্রণ করে । ডিফল্টরূপে ফাইল এবং .so মডিউল।

উদাহরণ স্বরূপ:

% httpd -V
Server version: Apache/2.2.17 (Unix)
Server built:   Dec 17 2010 11:58:24
Server's Module Magic Number: 20051115:25
Server loaded:  APR 1.3.12, APR-Util 1.3.9
Compiled using: APR 1.3.12, APR-Util 1.3.9
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

যে আউটপুট মূল লাইন হয় HTTPD_ROOT। এটি কনফিগার করার সময় আমার ক্ষেত্রে, অ্যাপাচি ROOTডিরেক্টরিটি কোথায় শুরু করতে হবে তা নির্ধারণ করে /etc/httpd। ফাইল এবং মডিউল।

দ্রষ্টব্য: এটি ROOTএকই জিনিস নয় DocumentRoot। এটি ডেমনটি ROOTকীভাবে httpdসংকলিত হয়েছিল, এটি DocumentRootনির্দিষ্ট করার জন্য httpdডেমনটি কোথায় প্রকৃত ওয়েব সামগ্রী (.html ফাইল এবং এর জন্য) সন্ধান করা উচিত তা নির্দিষ্ট করে ।

আমার httpd.confফাইলের জন্য আমার কাছে নিম্নোক্ত লোড লাইন রয়েছে:

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so

এটি দেওয়া আপনার মডিউলগুলির পুরো পথটি হবে উদাহরণস্বরূপ:

/etc/httpd/modules/mod_auth_basic.so

এটি CentOS 5.x সিস্টেম থেকে এসেছে তবে কৌশলটি এখনও উপযুক্ত।

বিটিডাব্লু, এটি কিছুটা বিভ্রান্তি পেতে পারে কারণ সেন্টোসের ক্ষেত্রে ফাইলগুলি এখানে শারীরিকভাবে সংগঠিত হয়:

% ls /usr/lib/httpd/modules/
libphp5.so            mod_authnz_ldap.so      mod_dav_fs.so      mod_headers.so       mod_perl.so            mod_speling.so

... এবং তারপরে অ্যাপাচি ডেমনটিতে অ্যাক্সেসযোগ্য httpd, এই পথ দিয়ে:

% ls -l /etc/httpd/
total 12
drwxr-xr-x 2 root root 4096 Apr 26  2011 conf
drwxr-xr-x 3 root root 4096 Apr 26  2011 conf.d
-rw-r--r-- 1 root root   18 Feb 24  2009 htpasswd
lrwxrwxrwx 1 root root   19 Apr 26  2011 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root   27 Apr 26  2011 modules -> ../../usr/lib/httpd/modules
lrwxrwxrwx 1 root root   13 Apr 26  2011 run -> ../../var/run

modulesলিংক সংযোগ স্থাপন করে /etc/httpd-> /usr/lib/httpd/modules


SLM হিসাবে আমি আগের পোস্টে বলেছেন, ServerRoot ServerRoot নির্দেশ সংজ্ঞায়িত এবং কিছুই সবটা HTTPD_ROOT যা মাধ্যমে প্রদর্শন করা হয় কি আছে হয় "httpd 'র -V।" আমার আগের পোস্টে রেফারেন্সযুক্ত অ্যাপাচি এর ওয়েব পৃষ্ঠাগুলি দেখুন বা আপনি যদিনিজের httpd.conf ফাইলেসার্ভার রুট নির্দেশিকা পরিবর্তন করতে চানএবং নিজের জন্য দেখুন।
বিলেন্নাহ

সার্ভার রুট এইচটিটিপিডি_রোটকে ওভাররাইড করার একটি উপায়। HTTPD_ROOT - প্রিফিক্স কনফিগার সুইচটির মাধ্যমে সংকলন সময়ে সেট করা আছে। আপনার পোস্টটি বিভিন্ন বি / ডাব্লু সার্ভার রুট এবং ডকুমেন্টরুটকে পৃথক করেছিল। httpd.apache.org/docs/current/mod/core.html#serverroot । আপনার এসএফ অ্যাকাউন্টের সাথে আপনি একটি নাম নিবন্ধিত দেখতে ভাল!
slm

এটি কি সত্যই এই প্রশ্নের উত্তর দেয়: "আমি কীভাবে অ্যাপাচিকে বলতে পারি কোন পিএইচপি ব্যবহার করতে হবে?" ?
পিএমপিআর

ট্রিক্স ওপেন তাই হ্যাঁ এটি গ্রহণ।
slm

@slm এটি প্রশ্নের উত্তর দেয় না।
কোয়ান্ট

4

locateকমান্ডটি দিয়ে আপনি আপনার সিস্টেমে ফাইলগুলি সন্ধান করতে পারেন :

# সনাক্ত করুন libphp5.so

এটি সেই নামের সাথে সমস্ত ফাইলের পুরো পথ মুদ্রণ করবে। আমি এক আছে /usr/libexec/apache2/libphp5.so


1
তাতে কি? এটি কি প্রশ্নের উত্তর? অথবা কোন ফাইল খুঁজে পাওয়ার উপায়?
পিএমপিআর

1
@ ট্রিক্স, প্রশ্নকর্তা বলেছেন, "আমি জানি না সে কী বা কোথায়" " আমি দেখিয়েছি যে এটি কোথায় আছে তা খুঁজে বের করতে হবে। আমি ধরে নিয়েছিলাম যে একবার প্রশ্নকর্তা নামযুক্ত ফাইলের অন্য সমস্ত অবস্থান প্রশ্নে দেখে গেলে এটি কীভাবে আলাদা করতে হবে সেটিংটি কীভাবে পরিবর্তন করবেন তা স্পষ্ট হবে।
রব কেনেডি

4

Httpd.conf এ লোড হওয়া মডিউলগুলির প্যারেন্ট ডিরেক্টরিটি (যেমন libexec/apache2/libphp5.so:) ServerRootনির্দেশ দ্বারা সংজ্ঞায়িত হয় যা ডিফল্টরূপে সাধারণত সেট করা থাকে /usr। আমি এটি পরিবর্তন করার প্রস্তাব দেব না তবে ঠিক সেই পথটি কোথায় সংজ্ঞায়িত করা হয়েছে তা কারও পক্ষে কারও পক্ষে কার্যকর হতে পারে।

অ্যাপাচি এর ওয়েবসাইট সার্ভার রুট সম্পর্কে নিম্নলিখিত বলে :

অন্যান্য কনফিগারেশন নির্দেশের আপেক্ষিক পাথ (যেমন অন্তর্ভুক্ত বা লোডমডুল, উদাহরণস্বরূপ) এই ডিরেক্টরিটির সাথে সম্পর্কিত হিসাবে নেওয়া হয়।

অতিরিক্ত হিসাবে ডিফল্ট httpd.conf ফাইল মন্তব্য পড়ুন:

সার্ভার রুট: ডিরেক্টরি গাছের শীর্ষের উপরে সার্ভারের কনফিগারেশন, ত্রুটি এবং লগ ফাইলগুলি রাখা হয়।


2
ওপি সার্ভার রুটের কোনও সংজ্ঞার পরে নয়। পরিবর্তে (গুলি) তিনি প্রশ্নটি জিজ্ঞাসা করেছেন "কীভাবে পিএইচপি ব্যবহার করতে হবে তা আমি অ্যাপাচি কে বলব?" আপনি যদি সত্যিই এটির উত্তর দিতে চান, তবে এটির উত্তর দিন
Pmpr

3

অ্যাপাচি "/ usr / Libxec / httpd /" এ মডিউলগুলি সন্ধান করা উচিত। সেখানে আপনি "libphp5.so" নামে একটি ফাইল বা সিমিলিংক পাবেন। যদি এটি একটি সিমিলিংক হয় তবে আপনাকে নতুন 5.2.8 লিবিপ্প 5-এ রিলিংক করতে হবে, অন্যথায় কেবল "/ usr / Libxec / httpd /" এ 5.2.8 libphp5.so অনুলিপি করতে হবে এবং "sudo apachectl পুনঃসূচনা" দিয়ে অ্যাপাচি পুনরায় চালু করতে হবে ।


0

আমার একটি সার্ভারে অ্যাপাচি এবং পিএইচপি ইনস্টল ছিল। এটি পূর্ববর্তী সিস্টেম অ্যাডমিন দ্বারা ইনস্টল করা হয়েছিল। অ্যাপাচি এবং পিএইচপি উভয়ই উত্স থেকে অনুসরণ করা হয়েছিল। এটির পাশাপাশি একটি ডিফল্ট পিএইচপি ইনস্টল করা ছিল। তাই আপাচে কোন পিএইচপি ব্যবহার করে তা জানতে। আমি নীচের কমান্ড চালাচ্ছি

   <Install Dir of PHP>/bin/php -i | grep apxs

এটি আমাকে অ্যাপাচে অ্যাপেক্সের পথ দিয়েছে

  APACHE_HOME/bin/apxs

এটি আমাকে পিএইচপি দ্বারা অ্যাপাচি ব্যবহার করছে এমন তথ্য দিয়েছে। আমি টাইপ করার সময় ডিফল্ট পিএইচপি ত্রুটি দিয়েছে

#php -i | grep apxs 

 Failed loading opcache.so:  opcache.so: cannot open shared object file: No    such file or directory PHP Warning:  PHP Startup: Unable to load dynamic library     '<PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so' - <PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so: undefined symbol: OnUpdateLongGEZero in Unknown on line 0

সুতরাং এইভাবে আমি আপাচি দ্বারা ব্যবহৃত পিএইচপি বের করতে সক্ষম হয়েছি।


1
দু'বার একই উত্তর পোস্ট করবেন না দয়া করে। পরিবর্তে, প্রথম উত্তরের লিঙ্ক।
সোভেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.