คำถามติดแท็ก php

PHP เป็นภาษาสคริปต์วัตถุประสงค์ทั่วไปที่เหมาะอย่างยิ่งสำหรับการพัฒนาเว็บ คู่มือออนไลน์เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับไวยากรณ์ภาษาและมีรายการฟังก์ชั่นในตัวและส่วนขยายที่กว้างขวาง ส่วนขยายส่วนใหญ่สามารถพบได้ใน PECL


8
การโฮสต์หลายไซต์ - ช่องโหว่ที่สำคัญที่พลาดไม่ได้ที่จะทำให้ไซต์ปลอดภัยจากกันคืออะไร?
แก้ไข # 2 23 กรกฎาคม 2558: ค้นหาคำตอบใหม่ที่ระบุรายการความปลอดภัยที่สำคัญที่ไม่ได้รับในการตั้งค่าด้านล่างหรืออาจให้เหตุผลที่จะเชื่อว่าทุกอย่างครอบคลุม แก้ไข # 3 29 กรกฎาคม 2015: ฉันกำลังมองหาการกำหนดค่าผิดพลาดโดยเฉพาะอย่างยิ่งโดยไม่ได้ตั้งใจอนุญาตให้บางสิ่งบางอย่างที่สามารถใช้ประโยชน์เพื่อหลีกเลี่ยงข้อ จำกัด ด้านความปลอดภัยหรือแย่ลง แต่ยังเปิดกว้าง นี่คือการตั้งค่าโฮสติ้งแบบหลายไซต์ / แชร์และเราต้องการใช้อินสแตนซ์ Apache ที่ใช้ร่วมกัน (เช่นทำงานภายใต้บัญชีผู้ใช้หนึ่งบัญชี) แต่ด้วย PHP / CGI ที่ทำงานในฐานะผู้ใช้ของแต่ละเว็บไซต์เพื่อให้แน่ใจว่าไม่มีไซต์ใด ๆ ตรวจสอบให้แน่ใจว่าไม่มีอะไรพลาด (เช่นถ้าเราไม่รู้เกี่ยวกับการป้องกันการโจมตี symlink) นี่คือสิ่งที่ฉันมี: ตรวจสอบให้แน่ใจว่าสคริปต์ PHP ทำงานเป็นบัญชีผู้ใช้และกลุ่ม Linux ของเว็บไซต์และถูกจำคุก (เช่นใช้ CageFS) หรืออย่างน้อยก็ถูก จำกัด อย่างถูกต้องโดยใช้สิทธิ์ระบบไฟล์ Linux ใช้ suexec เพื่อให้แน่ใจว่าสคริปต์ CGI ไม่สามารถทำงานได้ในฐานะผู้ใช้ Apache …

2
php-fpm ส่งคืนการตอบกลับเปล่าไปยัง nginx
nginx กำลังเชื่อมต่อกับ php-fpm ผ่าน fastcgi โดยใช้มาตรฐาน/etc/nginx/fastcgi_paramsในบล็อกตำแหน่ง เมื่อเชื่อมต่อกับ /.status (php-fpm.ini :: ping.path) จากบรรทัดคำสั่งด้วยcgi-fcgi -bindผลลัพธ์จะกลับมาตามที่คาดไว้ (ชุด X-Powered-By ชุดการตอบสนอง ฯลฯ ) เมื่อร้องขอด้วย nginx ผลลัพธ์จะกลับมาว่างเปล่า (ชุด X-Powered-By ไม่มีความยาวหรือเนื้อหา) nginx ส่งคืน 200 เนื่องจากได้รับการตอบกลับ "ถูกต้อง" การเฝ้าดู tcpdump ฉันได้แยกคำขอให้เท่าเทียมกันในส่วนหัว FCGI ของพวกเขา (ลบด้วยตัวแปร env ที่เกี่ยวข้องกับผู้ใช้ที่ยังคงตั้งค่าโดยเชลล์)
9 php  nginx  php-fpm  fastcgi 

2
อนุญาตการเข้าถึง PhpMyadmin บน virtualhost ที่ระบุเท่านั้น
ฉันกำลังทำงานกับ virtualhost Environment หลายตัว ฉันได้ติดตั้ง PhpMyadmin สำหรับการควบคุมระยะไกล Mysql สภาพแวดล้อมมีการกำหนดค่าดังนี้: one.domain.com two.domain.com onlyphpmyadmin.domain.com ตอนนี้ถ้าฉันเข้าถึงหนึ่งในสามโดเมน http://one.domain.com/phpmyadmin/ http://two.domein.com/phpmyadmin/ http://onlyphpmyadmin.domain.com/phpmyadmin/ ผลลัพธ์จะเหมือนกันอนุญาตให้เข้าถึง Phpmyadmin เป้าหมายคือรับสถานการณ์เช่นนี้ด้านล่าง http://one.domain.com/phpmyadmin/ --> access denied http://two.domein.com/phpmyadmin/ --> access denied http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed ซึ่งไม่มีแฮ็คที่คล้ายกับ <?php if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com') die('access denied'); ... ?> ในไฟล์ Phpmyadmin บางไฟล์ นี่คือไฟล์การกำหนดค่า Phpmyadmin ของฉัน Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> …

2
สิ่งที่ต้องทำหลังจากกดขีด จำกัด การเชื่อมต่อสูงสุด 256 ขีด จำกัด Apache
หลังจากเกาหัวของฉันพยายามคิดออกว่าทำไมเว็บไซต์ของฉันตอบสนองช้ามากแม้ว่าทรัพยากรเซิร์ฟเวอร์จะดีฉันก็ตรวจสอบสถานะ Apache และพบว่า: 78 requests/sec - 0.7 MB/second - 8.5 kB/request 256 requests currently being processed, 0 idle workers ดูเหมือนว่าอาปาเช่ของฉันจะเต็มไปด้วยการเชื่อมต่ออย่างแท้จริง ใครก็ตามที่พยายามเข้าชมเว็บไซต์ของฉันจะได้รับ "รายการรอ" จนกว่า Apache จะให้บริการฟรีอีกครั้ง ดูเหมือนว่าฉันมีสองตัวเลือก A) เพิ่มขีด จำกัด การเชื่อมต่อสูงสุดที่สูงกว่า 256 ถึงแม้ว่าตามบทความนี้มันไม่ง่ายเลย: โดยค่าเริ่มต้นพารามิเตอร์ MaxClients มีการรวบรวมในขีด จำกัด ที่ยากของ 256 ซึ่งสามารถเปลี่ยนแปลงได้โดยการคอมไพล์ Apache ใหม่ การแจกแจงบางส่วนหรือ บริษัท โฮสติ้งเพิ่มขีด จำกัด นี้เป็นค่าที่สูงมากเช่น 512 หรือ 1024 เพื่อรองรับการโหลดจำนวนมาก …
9 apache-2.2  php  http  lamp 

5
ฉันจะตั้งค่า postfix เพื่อเก็บอีเมลในไฟล์แทนที่จะส่งต่อได้อย่างไร
ฉันต้องการเรียกใช้การแสดงละครของเซิร์ฟเวอร์ที่ใช้งานจริงในสภาพแวดล้อมท้องถิ่น ระบบรันแอปพลิเคชั่น PHP ซึ่งจะส่งอีเมลไปยังลูกค้าในสถานการณ์ต่าง ๆ และฉันต้องการแน่ใจว่าไม่มีอีเมลใดถูกส่งมาจากสภาพแวดล้อมการจัดเตรียม ฉันสามารถปรับแต่งรหัสเพื่อให้ใช้ผู้ส่งอีเมลปลอมได้ แต่ฉันต้องการเรียกใช้รหัสเดียวกันกับสภาพแวดล้อมการใช้งานจริง ฉันสามารถใช้ MTA อื่น (Postfix เป็นสิ่งที่เราใช้ในการผลิต) แต่ฉันต้องการสิ่งที่ติดตั้งง่ายภายใต้ Debian / Ubuntu :) ดังนั้นฉันต้องการตั้งค่าการติดตั้ง Postfix ในเครื่องเพื่อจัดเก็บอีเมลทั้งหมดในไฟล์ (อย่างน้อยหนึ่งไฟล์) แทนที่จะส่งต่อ ที่จริงแล้วฉันไม่สนใจว่ามันจะถูกเก็บไว้อย่างไรตราบใดที่เป็นไปได้ที่จะตรวจสอบอีเมลที่ส่งไป แม้แต่ตัวเลือกการตั้งค่าที่บอกให้ postfix เก็บอีเมลในคิวอีเมลจะทำงาน (ฉันสามารถกำจัดคิวเมื่อฉันโหลดเซิร์ฟเวอร์ staging ด้วยสำเนาจากการผลิต) ฉันรู้ว่าสิ่งนี้เป็นไปได้ฉันไม่ได้พบโซลูชันออนไลน์ที่ดีสำหรับสิ่งที่ดูเหมือนว่าเป็นความต้องการทั่วไป ขอบคุณ!

3
จำนวนการเชื่อมต่อ AWS RDS
ฉันใช้ AWS RDS กับ MySQL สำหรับโครงการและมีอินสแตนซ์ "ใหญ่" เอกสารมีความชัดเจนเกี่ยวกับความหมายของสิ่งนี้เท่าที่คำนวณทรัพยากรและ RAM ไป แต่ฉันไม่สามารถหาสิ่งที่เอกสารจำนวนการเชื่อมต่อฐานข้อมูลแบบเปิดที่ฉันสามารถมี แอพที่ฉันใช้คือ PHP และใช้ PDO กับการเชื่อมต่อแบบต่อเนื่อง ซึ่งหมายความว่าจำนวนการเชื่อมต่อที่เปิดสามารถเข้าถึงจำนวนสูงสุดของกระบวนการลูก PHP ทำงานในจุดใดก็ตาม ฉันจะแน่ใจได้อย่างไรว่าอินสแตนซ์ RDS ของฉันมีการเชื่อมต่อสูงสุดตั้งค่าไว้สูงพอที่จะใช้งานได้อย่างสะดวกสบายหรือไม่

3
IIS ไม่แสดงข้อผิดพลาด PHP แบบละเอียด - แสดงข้อผิดพลาดเซิร์ฟเวอร์ 500 แทน
ฉันคุ้นเคยกับการให้บริการไซต์จาก Apache แต่ตอนนี้ฉันถูกบังคับให้ใช้เซิร์ฟเวอร์ IIS หน้า PHP ของฉันจำนวนหนึ่งคืนข้อผิดพลาด 500 และฉันไม่สามารถดีบักได้เนื่องจาก IIS กำลังระงับข้อความแสดงข้อผิดพลาด ฉันได้ลองใช้ini_set('display_errors',1);โค้ด แต่ก็ไม่มีประโยชน์ มีข้อผิดพลาดปรากฏขึ้นในบางเว็บไซต์ แต่ไม่ใช่เฉพาะที่ฉันต้องการตรวจแก้จุดบกพร่องดังนั้นฉันจึงไม่คิดว่าเป็นการตั้งค่า PHP ทั่วโลก แต่เป็นสิ่งที่เกี่ยวข้องกับการตั้งค่าไซต์สำหรับไซต์นั้น ฉันไม่พบคำตอบที่ชัดเจนเกี่ยวกับวิธีเปิดใช้งานข้อผิดพลาด PHP ที่แสดง ฉันพบลิงค์นี้แล้วแต่ไม่แน่ใจว่าจะหา " system.webServer-> httpErrors " ได้ที่ไหน ฉันจะเปิดใช้งานข้อผิดพลาดการแสดงใน PHP ภายใต้ IIS ได้อย่างไร
9 php  iis 

1
mod_headers ไม่ส่งส่วนหัวเมื่อไฟล์เป็น PHP
ฉันได้ตั้งค่าไฟล์. htaccess เป็นค่าต่อไปนี้: Header set MyHeader "I'm Set!" หากฉันไปที่ไดเรกทอรีนั้น ( http://example.com/test/) ซึ่งไม่มีไฟล์ดัชนีเริ่มต้นและดูกิจกรรมเครือข่าย (ในกรณีนี้ด้วย Chrome) ฉันจะเห็นว่าส่วนหัวกำลังถูกส่ง หากฉันไปที่ไฟล์ php ( http://example.com/test/test.php) ส่วนหัวจะไม่ถูกส่ง ฉันได้สร้าง index.html (โดยมี<pre>Hiเนื้อหาเหมือนกัน) และได้รับการส่ง ฉันเปลี่ยนชื่อไฟล์เป็น.phpไม่มีส่วนหัว ถ้าฉันเปลี่ยน orignal test.phpเป็นtest.htmlมันจะแสดงผลรหัสขยะและส่วนหัวจะถูกส่ง หากฉันเปลี่ยนtest.phpเป็นtest.pngฉันจะได้รับไอคอนรูปภาพที่เสียหายและส่วนหัวจะถูกส่ง ดังนั้นหากไม่มีการทดสอบนอกเหนือจากด้านบนในแง่ของ mime-type และนามสกุลไฟล์จะปรากฏเฉพาะ.phpไฟล์ (legit หรืออย่างอื่น) ที่ตั้งค่าเป็นไม่มี. htaccess ใช้กฎหรือคำสั่ง mod_headers โดยเฉพาะ แต่ฉันไม่ทราบวิธีทดสอบสิ่งนี้และเนื่องจากเป็นเซิร์ฟเวอร์ที่ใช้ร่วมกันฉันจึงไม่httpd.confสามารถเข้าใช้งานได้ ความคิดใด ๆ เกี่ยวกับสาเหตุที่ Apache จะข้ามการส่งส่วนหัวสำหรับไฟล์ php? ฉันยังลอง: <FilesMatch "\.(php)$"> Header …


2
ผู้ดูแลระบบเซิร์ฟเวอร์ของฉันต้องการให้ฉันตั้งค่าการอนุญาตพับลิกเขียนบนไดเร็กทอรี
ฉันค่อนข้างใหม่ต่อการพัฒนาเว็บไซต์ดังนั้นโปรดอดใจรอ ฉันเป็นนักพัฒนา iPhone เป็นหลัก แต่เมื่อเร็ว ๆ นี้ฉันเพิ่งทำเว็บไซต์ให้คนอื่นโดยใช้โฮสติ้งที่ใช้ร่วมกัน ฉันสามารถเขียนไปยังไฟล์ใน PHP บนเว็บไซต์นั้นได้ดีโดยไม่ต้องคิดถึงสิทธิ์ ฉันอยู่ในขั้นตอนการปรับใช้บริการเว็บสำหรับแอพใหม่ที่ฉันทำ แต่มันไม่ได้ราบรื่น ความแตกต่างที่สำคัญที่สุดที่นี่คือฉันใช้เซิร์ฟเวอร์ของคนอื่นและมีการเข้าถึง FTP / DB โดยพื้นฐานแล้วฉันมีไฟล์ PHP จำนวนหนึ่งซึ่งเป็นค่า CMS ของฉัน: mysite.com/admin/manage_news.php mysite.com/admin/manage_events.php สคริปต์เหล่านั้นจะแก้ไขฐานข้อมูลหรือไฟล์ พวกเขาสามารถโต้ตอบกับ DB fine ได้ แต่สคริปต์ของฉันไม่สามารถเขียนไปยังระบบไฟล์ได้ ตัวอย่างเช่นพวกเขาอาจพยายามเขียนลงในไฟล์ต่อไปนี้: mysite.com/data/img/event_1.png mysite.com/data/somefile.txt สิ่งนี้ใช้ได้ผลดีกับการติดตั้ง MAMP ของฉัน (ในเครื่อง) แต่เมื่อนำไปใช้กับเซิร์ฟเวอร์ PHP ก็เกิดข้อผิดพลาดทุกครั้งที่มีการพยายามเขียน ... สิ่งเช่นนี้: ไม่สามารถเปิดไฟล์ "../data/img/someimage.png" เพื่อการเขียน ดังนั้นฉันจึงส่งอีเมลถึงผู้ชายที่ใช้เซิร์ฟเวอร์และเขากลับมาพูดว่า: ใช้ได้กับการอนุญาตสาธารณะหรือไม่ (777) และมันทำ - แต่ฉันก็ระมัดระวังด้วยการใช้สิทธิ์สาธารณะดังนั้นจึงปิดการใช้งานได้ทันทีอีกครั้ง …

3
NGINX ไม่เรียกใช้งานไฟล์ PHP
ฉันไม่พบคำตอบสำหรับสิ่งนี้ ติดตั้ง PHP5 + NGINX + PHP-FPM แล้วและไม่สามารถเรียกใช้ไฟล์ php ได้จะได้รับ "อ๊ะ! ลิงก์นี้ดูเหมือนจะใช้งานไม่ได้" ข้อผิดพลาดใน CHROME ฉันไม่มีรายงานบันทึกข้อผิดพลาดที่มีค่าฉันมี index.php ในรูทพยายามสร้างไฟล์ phpinfo.php ที่กำหนดเองไม่ทำงาน ฉันสามารถโหลดไฟล์ HTML ได้ แต่ไม่สามารถ PHP ได้ นี่คือการกำหนดค่าไซต์ท้องถิ่นของฉันใน NGINX: server { listen 80; server_name im; access_log /var/www/website/access.log; error_log /var/www/website/error.log; location / { root /var/www/website; index index.html index.htm index.php; } location ~ \.php$ …
9 php  nginx 

2
การตั้งค่าเซิร์ฟเวอร์ของฉันสำหรับ API ที่ใช้งานหนัก
ฉันจะซื้อเซิร์ฟเวอร์จำนวนมากในไม่ช้าสำหรับแอปพลิเคชันที่ฉันกำลังจะเปิดตัว แต่ฉันมีข้อกังวลเกี่ยวกับการตั้งค่าของฉัน ฉันขอขอบคุณข้อเสนอแนะใด ๆ ที่ฉันได้รับ ฉันมีแอปพลิเคชันซึ่งจะใช้ประโยชน์จาก API ที่ฉันเขียน ผู้ใช้ / นักพัฒนารายอื่นจะใช้ API นี้ด้วย เซิร์ฟเวอร์ API จะได้รับคำขอและส่งต่อไปยังเซิร์ฟเวอร์ผู้ปฏิบัติงาน API จะทำการร้องขอ mysql db สำหรับการบันทึกการพิสูจน์ตัวตนและการ จำกัด อัตราเท่านั้น เซิร์ฟเวอร์ของผู้ปฏิบัติงานแต่ละคนทำงานที่แตกต่างกันและในอนาคตที่จะขยายขนาดฉันจะเพิ่มเซิร์ฟเวอร์ผู้ปฏิบัติงานเพิ่มเติมเพื่อให้พร้อมใช้งาน ไฟล์กำหนดค่า API จะได้รับการแก้ไขเพื่อจดบันทึกเซิร์ฟเวอร์ผู้ปฏิบัติงานใหม่ เซิร์ฟเวอร์ผู้ปฏิบัติงานจะทำการประมวลผลบางอย่างและบางส่วนจะบันทึกเส้นทางไปยังภาพไปยังฐานข้อมูลท้องถิ่นเพื่อเรียกดูในภายหลังโดย API ที่จะดูในใบสมัครของฉันบางคนจะกลับสตริงของผลลัพธ์ของกระบวนการและบันทึกลงในฐานข้อมูลท้องถิ่น . การตั้งค่านี้มีประสิทธิภาพสำหรับคุณหรือไม่ มีวิธีที่ดีกว่าในการปรับโครงสร้างนี้หรือไม่? ฉันควรพิจารณาปัญหาอะไรบ้าง โปรดดูภาพด้านล่างฉันหวังว่ามันจะช่วยให้เข้าใจ

11
. htaccess ไม่เปลี่ยนเส้นทางไปยังหน้า www-prefixed อย่างถูกต้อง
ฉันกำลังพยายามเปลี่ยนเส้นทาง URL ที่ไม่มี www ไปที่ www.version (example.com ถึง www.example.com) ฉันใช้ตามปกติ RewriteCond %{HTTP_HOST} ^example\.com [nc] RewriteRule (.*) http://www.example.com/$1 [R=301,L] สิ่งนี้ใช้ได้กับโครงการอื่น ๆ ของฉันทั้งหมด อย่างไรก็ตามในเว็บไซต์นี้โดยเฉพาะมันจะจบลงด้วยการวนรอบการเปลี่ยนเส้นทาง นี่คือส่วนที่แปลกประหลาด: ฉันพยายามที่จะม้วนเวอร์ชั่นที่ไม่ใช่ www เพื่อดูว่าส่วนหัวของมันส่งให้ใช้ curl --get http://example.com --dump-header domain.header > domain.htmlอะไร ไฟล์ส่วนหัวมีลักษณะดังนี้: HTTP/1.1 301 Moved Permanently Date: Mon, 06 Jun 2011 14:45:16 GMT Server: Apache/2.2.16 (Debian) Location: http://example.com/ …

8
ฉันจะติดตั้ง PHP 5.3 บน CentOS ได้อย่างไร
ฉันต้องติดตั้ง PHP 5.3 บนเซิร์ฟเวอร์ CentOS ของฉัน ถ้าฉันทำyum install phpที่เก็บฐานติดตั้ง 5.1.6 ซึ่งเก่าเกินไปสำหรับแอปพลิเคชันที่ฉันต้องการติดตั้ง ดังนั้นฉันจึงพยายามใช้ที่เก็บIUSทำตามคำแนะนำอย่างเป็นทางการจาก IUS: root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-2.ius.el5.noarch.rpm root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm root@linuxbox ~]# rpm -Uvh ius-release*.rpm epel-release*.rpm ตกลง. ตอนนี้ฉันก็ทำได้yum install php53ฯลฯ สำหรับทุกสิ่งที่ฉันต้องการ ... แต่ฉันได้รับข้อผิดพลาดนี้: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Check Error: file /usr/bin/php from install of …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.