Www-ডেটা হিসাবে চালাতে লিনাক্স উবুন্টুতে কীভাবে পিএইচপি সিএলআই কনফিগার করবেন?


12

আমার উবুন্টুতে আমার একটি সাইমফনি 2 অ্যাপ্লিকেশন রয়েছে। সিমফোনির প্রচুর উপকারী কনসোল কমান্ড রয়েছে (যেমন php app/console cache:clearবা php app/console assets:install web)।

সমস্যাটি আমি যদি তাদের rootব্যবহারকারী হিসাবে চালিত করি তবে সদ্য উত্পন্ন ফাইলগুলির root:rootব্যবহারকারী / গোষ্ঠী থাকবে এবং আমি যদি আমার ওয়েবসাইটে প্রবেশ করি তবে আমি ত্রুটিগুলি পেয়েছি (বেকোস অ্যাপাচি এই ফাইলগুলি পড়তে / পরিবর্তন করতে পারে না -> তাদের থাকা উচিত www-data:www-data)।

দৌড়ানো chown www-data:www-dataসমস্যা সমাধান করে, তবে প্রতিবার যখন আমার ক্যাশে সাফ করা হয় তখনই এটি চালানো কোনও সমাধান নয়।

আমি কীভাবে সর্বদা www-ডেটা ব্যবহারকারী / গোষ্ঠী হিসাবে চলতে পিএইচপি সিএলআই কনফিগার করতে পারি?

অথবা

আমি কীভাবে একটি পৃথক ব্যবহারকারী হিসাবে একটি কমান্ড চালাতে পারি (রুট হওয়া, এটি www-ডেটা হিসাবে চালানো)?

উত্তর:


23

অন্য ব্যবহারকারী হিসাবে একবার একটি কমান্ড চালান:

sudo -u www-data php script.php

আপনি যদি এটি কাজ করা উচিত root

যেমন পিএইচপি সর্বদা চলমান হিসাবে www-data, বিভিন্ন সম্ভাবনা রয়েছে। আপনি একটি সাধারণ মোড়কের শেলস্ক্রিপ্ট তৈরি করতে পারেন। যদি এর /usr/bin/phpসাথে কেবল একটি নরম লিঙ্ক /usr/bin/php5বা অনুরূপ হয়, এটি এটিকে সহজ করে তোলে। php5এই জাতীয় স্ক্রিপ্ট দিয়ে কেবল সফট-লিঙ্ক (ফাইল নয় ) প্রতিস্থাপন করুন :

#!/bin/sh

sudo -u www-data php5 $*

return $?

যদিও এটি পরীক্ষা করা হয়নি। এছাড়াও সচেতন থাকুন যে এটি php5ব্যবহারকারী হিসাবে চালানোর জন্য সর্বদা চেষ্টা করবে www-data, এমনকি ব্যবহারকারী নাও থাকতে পারে rootএবং এর করার অনুমতি নাও থাকতে পারে। এবং এটি আপনি যা চান তা নাও হতে পারে। পিএইচপি এক্সিকিউট করার চেষ্টা করার সময় কিছু ইনস্টল করা পরিষেবা সমস্যা হতে পারে।

মূলটি প্রয়োগ করার জন্য একটি (সম্ভবত আরও ভাল) সমাধানটি নরম-লিঙ্কটি /usr/bin/phpএকা রেখে তার /root/binপরিবর্তে স্ক্রিপ্টটি স্থাপন করা হতে পারে। তারপর মাধ্যমে পথে যে ফোল্ডারটিকে যোগ .bashrc, .profileবা অনুরূপ। যদি আপনার কাছে থাকে তবে /etc/skel/.profileএটি কীভাবে সম্পন্ন হয়েছে তা নির্দেশ করতে পারে:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

এটি একবার আপনার বা একই রকম হয়ে গেলে .bashrc, .profileআপনার খোলার প্রতিটি নতুন শেল আপনাকে সরাসরি $HOME/bin( /root/binমূলের জন্য ) কোনও এক্সিকিউটেবল (+ x) সম্পাদন করতে দেয় ।

ইঙ্গিত: আপনি মত মোড়কের স্ক্রিপ্ট কিছু নাম করতে পারেন phpwwwযাতে আপনি স্পষ্টভাবে উল্লেখ php script.phpবা phpwww script.phpযদি আপনি নিয়মিত বা sudo'ed পিএইচপি চান সিদ্ধান্ত নিতে।

আর একটি সমাধান হ'ল একটি সাধারণ ওরফে। আপনার এটিকে রাখুন .bashrc, .profileবা অনুরূপ:

alias phpwww='sudo -u www-data php'

মজার, অর্ধেক শ্রবণটি কেটে গেছে এবং আমি আবার নিজের প্রশ্নে হোঁচট খেয়েছি =) মনে হচ্ছে গতবার আপনার উত্তরটি গ্রহণ করতে ভুলে গিয়েছি - আমি ঠিক ঠিক করেছি যে, আপনাকে ধন্যবাদ!
লুস্ট্রো

ওরফে পদ্ধতিটি এত রক্তাক্ত ধারণা তৈরি করে এবং এটি আমার সঠিক সমস্যার সমাধান করেছে
RedactedProfile

1

## লিনাক্স (আইআরসি ফ্রিডনডটনেট) -এ মাওয়ার দ্বারা উত্তর


একটি স্বতন্ত্র ব্যবহারকারী হিসাবে একটি কমান্ড চালাতে -> ব্যবহার করে যে ব্যবহারকারী ব্যবহার করুন:

su www-data

আমি এখনও পিএইচপি কনফিগার করতে আগ্রহী (যদি এটি সম্ভব হয়) যাতে চলমান:

root@mycomp php (php script creating a file)

রুট ব্যবহারকারী হিসাবে

www-ডেটা: www-ডেটা ব্যবহারকারী / গোষ্ঠী সহ একটি ফাইল তৈরির ফলাফল হবে

(এইভাবে আমার কমান্ডগুলি চালানোর জন্য আমাকে মূল থেকে www-ডেটাতে স্যুইচ করতে হবে না)


1

আমি www-ডেটা দ্বারা মালিকানাধীন / usr / bin / php তৈরি করার চেষ্টা করব এবং স্যুইড অনুমতি সেট করব, যা ফাইলের মালিক দ্বারা আদেশটি কার্যকর করতে বাধ্য করে। আপনি এটি দিয়ে এটি করতে চাই:

chmod u+s /usr/bin/php

আপনার মধ্যে অষ্টাল স্বরলিপি পছন্দ:

chmod 4755 /usr/bin/php

যদিও আমি অবশ্যই বলব যে আপনি যখনই ডাব্লু-ডেটা তৈরি করতে যাচ্ছেন তখন কোনও অসুবিধা তৈরি করা উচিত, www-ডেটা অ্যাকাউন্টের বিন্দুটি যতটা সম্ভব সামান্য মালিকানা হওয়া উচিত।


যে কারণে আমি
রিহার

1

যদি আপনি পিএইচপি-এফএমপি পেয়েছেন (ফাস্টসিজিআই প্রসেস ম্যানেজার)
আপনি এটি কনফিগারেশন ফাইলে সেট করতে পারেন (সেন্টোসের জন্য ন্যূনতম): /etc/php-fpm.d/www.conf
লাইন 39 এ আপনি ব্যবহারকারী সেট করতে পারেন এবং 49 আপনি গ্রুপ সেট করতে পারেন


এটি প্রযোজ্য নয় php-cli, তাই না?
রিহা

1

স্ক্রিপ্ট ফাইল তৈরি করুন:

touch /usr/bin/phpuid
chmod +x /usr/bin/phpuid

সামগ্রী যুক্ত করুন:

#!/bin/bash

UIDX="#"`stat -c '%u' $1`
sudo -u $UIDX php5 $*

মূল থেকে আপনার স্ক্রিপ্টগুলি চালান:

phpuid /path/to/script.php

অথবা আপনার স্ক্রিপ্টগুলিতে দোভাষী ব্যবহার করুন

#!/usr/bin/phpuid
<?php
phpinfo();

দ্রষ্টব্য: ডেবিয়ান 7 এ পরীক্ষিত আপনার sudo ইনস্টল করতে হতে পারে

apt-get install sudo

স্ক্রিপ্ট.এফপি দ্বারা নির্মিত সমস্ত ফাইলের সেই স্ক্রিপ্টের একই ইউড থাকবে

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