কমান্ড লাইনের মাধ্যমে কীভাবে PH _GET ভেরিয়েবলগুলি পিএইচপি স্ক্রিপ্টে পাস করবেন?


14

আমি একটি ওয়েবসভার তৈরি করার চেষ্টা করছি যা পিএইচপি স্ক্রিপ্টগুলি পরিবেশন করে। বর্তমানে, এটি নিম্নলিখিত হিসাবে কাজ করে:

  1. ক্লায়েন্ট /index.php?test=value অনুরোধ করে
  2. সার্ভারটি প্রার্থনা করে php index.php
  3. সার্ভারটি এইচটিটিপি অনুরোধ শিরোনামগুলিকে পিএইচপি প্রক্রিয়াতে STDIN হিসাবে ফিড দেয়
  4. সার্ভারটি phpSTDOUT থেকে আউটপুট পড়ে এবং এটি ক্লায়েন্টকে দেয়

প্যারামিটারগুলি পিএইচপি স্ক্রিপ্টে পাস হচ্ছে না তা বাদে এই সমস্ত কাজ করছে কারণ:

var_dump($_GET);

আয়:

অ্যারে (0)}}

$_GETযখন পিএইচপি বাইনারি চালু হয় তখন প্যারামিটারগুলি কীভাবে যায় ?


কোন ওয়েব সার্ভার? আপনি কীভাবে ওয়েব সার্ভারটি কনফিগার করেছেন? কীভাবে আপনি পিএইচপি কনফিগার করেছেন?
joschi

@ জোস: এটি জেএইচটিটিপি - একটি আমি নিজে লিখেছিলাম।
নাথান ওসমান

উত্তর:


29

আপনি কোন পিএইচপি বাইনারি ব্যবহার করছেন? সি এল আই বা সিজিআই? আমি সন্দেহ করি যে পিএইচপি-র জন্য বাইনারিটির সঠিকভাবে পরিবেশগত পরিবর্তনশীল এবং পোষ্ট ডেটা গ্রহণ করুন যদি আপনি এটি পাস করেন তবে হ্যান্ডেল করতে বাইনারিটির একটি সিজিআই সংস্করণ আপনার প্রয়োজন ।

php-cgiবাইনারি কার্যকরী সিজিআই ইন্টারফেস, যা আপনি কমান্ড লাইন প্যারামিটার পাস অনুমতি দেয়:

php-cgi -f index.php left=1058 right=1067 class=A language=English

যার শেষ পর্যন্ত $_GET:

Array
(
    [left] => 1058
    [right] => 1067
    [class] => A
    [language] => English
)

আপনি সিজিআই কীভাবে কাজ করে তা আপনি পড়তে চাইতে পারেন যাতে আপনি এটি নিজের ওয়েব সার্ভারে প্রয়োগ করতে পারেন।

রেফ: আরএফসি 3875


হ্যাঁ ... যথেষ্ট নিশ্চিত সমস্যা ছিল।
নাথান ওসমান

3

উইকিপিডিয়া অনুসারে , উত্তরটি QUERY_STRINGপরিবেশের পরিবর্তনশীল সেট করতে হবে :

QUERY_STRING='user=foo&pass=bar&left=1234' php-cgi index.php

বা পৃথক পদক্ষেপে:

export QUERY_STRING='user=foo&pass=bar&left=1234'
php-cgi index.php

আপনি যদি php-cgiকমান্ডটি ব্যবহার করেন তবে এটি কাজ করে , কারণ এটি সিজিআই নির্দিষ্টকরণের অংশ of সাধারণ phpকমান্ড এই পরিবর্তনশীলটিকে উপেক্ষা করে তবে আপনার স্ক্রিপ্টটি এটি ব্যবহার করতে পারে।


1

যদি আপনি পিএইচপি স্ক্রিপ্ট পাস করেন ph

$result = parse_args($argv,$argc,$help);
print_r($result);

আপনি যদি এটি STDIN এ পাস করছেন তবে আপনাকে STDIN পড়তে হবে এবং শিরোনামগুলি নিজেই বিশ্লেষণ করতে হবে। REQUEST_URI এ আপনার প্রয়োজনীয় ডেটা থাকবে এবং আপনি এটি পাস করতে পারেন।


$_GETপিএইচপি যখন অ্যাপাচের অধীনে ব্যবহৃত হয় তখন আমার মতো ভেরিয়েবলগুলি পাওয়া যায় ।
নাথান ওসমান

কেউ ভাল না আসা পর্যন্ত সব ঠিক আছে/index.php?test=asdf;rm%20-rf%20/
ড্যান্লেফ্রি

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