NabiKAZ نوشته است:...
(2)
فایل دوم الزاماً بایستی اسمش phpfileCreator.bash میبود که اشاره نکردی و من از روی سورس متوجه شدم.
(3)
شاید بهتر می بود هر دو اسکریپت رو یکی میکردی. اما همینجوری هم باعث شد نکات خوبی درمورد اجرای فایل با پارامتر آشکار بشه! که من هم نمیدونستم و البته وقتی سرچ کردم به این کد جالب در این مورد رسیدم که گویاست:
....
(4)
این دستور شگفت انگیز:
- کد: گزینش همه
echo $?
که بهش اشاره کردی. من امتحان کردم همیشه مقدار صفر رو برمیگردونه. ممکنه کمی درموردش توضیح بدی؟
(5)
یک نکته مهم اینکه، فایلی که به روش شما اجرا میشه یک هدر به صورت زیر به خروجی ارسال میکنه:
- کد: گزینش همه
X-Powered-By: PHP/5.2.11
Content-type: text/html
که اصلاً لازم نیست و برای ظاهر نشدن اون، خط اول رو بایستی با سوئیچ q- بدین صورت نوشت:
[
code]
#!/usr/bin/php -q
[/code]
(6)
خب میتونستی از خروجی دستور:
- کد: گزینش همه
which php
برای پیدا کردن مسیر نصب php استفاده کنی و اون رو به ابتدای فایل اضافه کنی، تا دیگه لازم نباشه مقدار اون رو به صورت دستی از کاربر بگیری.
(7)
یکجا اینجوری نوشته میشه: php in worksthe که خروجی اون فایل تست، به ابتدای خروجی دوم میچسبه. حتماً لازم نیست که بگم در php در دستور echo ، آخرش بهتره یه n\ بزاری که این مشکل رخ نده.
(8)
ضمناً فایل php رو در ترمینال اینجوری هم میشه اجرا کرد:
- کد: گزینش همه
php -f test.php
..
خب ماشالله شما پست طولانی زدین و جواب دادن بهش یکم زمان میبره!
اول اینکه ممنونم که این کد رو تست کردین و در مورد اسم فایل دوم هم فراموش کرده بودم و حق باشماست. دو تا اسکریپت رو من عمدا از هم جدا کردم تا بتونم به نوعی کد رو به حالت پیمانهای (ماجولار) پیاده سازی کرده باشم.
و اون کد چیز شگفت انگیزی نیست! این در واقع مشخص میکنند که برنامه/دستور قبلی اجرا شده به صورت عادی به پایان رسیده یا با خطا مواجه شده! برای امتحان کردنش کافیه دستور
- کد: گزینش همه
yes
رو وارد کنین و بعدش با ctrl+C متوقفش کنین. چون این عمل با کشتن پروسه موجب خارج شدن برنامه به حالتی غیر-نرمال میشود اگر بعد از آن دستور
- کد: گزینش همه
echo $?
را اجرا کنین با یک عدد غیر صفر روبهرو خواهید شد. من از این تکنیک برای تشخیص درست اجرا شدن برنامه فراخوانی شده کمک گرفتم.
در مورد هدری که گفتین اضافه میشه نمیدونم... راستش این قدر دقیق بررسیش نکرده بودم!
در مورد استفاده از دستور which حق باشماست. ولی من حالتی رو مد نظر قرار دادم که پی اچ پی در قالب یک بستهی lamp مثل xampp هم پیاده سازی شده باشه. در این حالت which نمیتونه مسیر php رو پیدا کنه و البته میشه از دستور find کمک گرفت که از نظر زمانی مقرون به صرفه نیست.
مورد هفت و هشتم دیگه از استادی شماست. خوبه که اینجا فرصتی هست تا با هم و از هم یاد بگیریم.