ฉันต้องการโหลดไฟล์ PHP เป็นตัวแปร ชอบinclude();
ฉันได้โหลดไฟล์ HTML ง่ายๆดังนี้:
$Vdata = file_get_contents("textfile.txt");
แต่ตอนนี้ฉันต้องโหลดไฟล์ PHP
ฉันต้องการโหลดไฟล์ PHP เป็นตัวแปร ชอบinclude();
ฉันได้โหลดไฟล์ HTML ง่ายๆดังนี้:
$Vdata = file_get_contents("textfile.txt");
แต่ตอนนี้ฉันต้องโหลดไฟล์ PHP
คำตอบ:
ฉันคิดว่าคุณต้องการรับเนื้อหาที่สร้างโดย PHPหากเป็นเช่นนั้นให้ใช้:
$Vdata = file_get_contents('http://YOUR_HOST/YOUR/FILE.php');
ไม่เช่นนั้นหากคุณต้องการรับซอร์สโค้ดของไฟล์ PHPจะเหมือนกับไฟล์. txt:
$Vdata = file_get_contents('path/to/YOUR/FILE.php');
eval()
หรือถ้าคุณกำลังจัดการกับรหัสที่ซับซ้อนมากขึ้น: github.com/nikic/PHP-Parser
$Vdata = file_get_contents(get_template_directory_uri() . '/path/to/file/in/theme.text');
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();
$myvar = ob_get_clean();
(ดูเอกสาร ob_get_clean )
หากคุณใช้http: //ตามที่แนะนำคุณจะอ่านได้เฉพาะสคริปต์ PHP เท่านั้น คุณสามารถอ่านสคริปต์ PHP ได้หากอยู่บนเซิร์ฟเวอร์เดียวกันกับสคริปต์ที่ทำงานอยู่ จากนั้นคุณสามารถใช้สิ่งที่ต้องการ
$Vdata = file_get_contents('/path/to/your/file.php");
หากคุณต้องการโหลดไฟล์โดยไม่เรียกใช้ผ่านเว็บเซิร์ฟเวอร์สิ่งต่อไปนี้ควรใช้งานได้
$string = eval(file_get_contents("file.php"));
สิ่งนี้จะโหลดจากนั้นประเมินเนื้อหาไฟล์ ไฟล์ PHP จะต้องถูกสร้างขึ้นอย่างสมบูรณ์<?php
และ?>
แท็กeval
เพื่อประเมิน
ในทางทฤษฎีคุณสามารถใช้ fopen จากนั้นใช้ stream_get_contents
$stream = fopen("file.php","r");
$string = stream_get_contents($stream);
fclose($stream);
ซึ่งควรอ่านทั้งไฟล์เป็น $ string สำหรับคุณและไม่ควรประเมินไฟล์ แม้ว่าฉันจะแปลกใจที่ file_get_contents ไม่ทำงานเมื่อคุณระบุเส้นทางภายในเครื่อง ....
หากไฟล์ของคุณมีคำสั่งส่งคืนเช่นนี้:
<?php return array(
'AF' => 'Afeganistão',
'ZA' => 'África do Sul',
...
'ZW' => 'Zimbabué'
);
คุณสามารถรับสิ่งนี้ให้กับตัวแปรดังนี้:
$data = include $filePath;
หรือคุณสามารถเริ่มการบัฟเฟอร์เอาต์พุตทำการรวม / ต้องการจากนั้นหยุดการบัฟเฟอร์ ด้วย ob_get_contents () คุณสามารถนำสิ่งที่ส่งออกมาจากไฟล์ PHP นั้นไปเป็นตัวแปร
file_get_contents () จะไม่ทำงานหากเซิร์ฟเวอร์ของคุณปิดallow_url_fopen โฮสต์เว็บที่ใช้ร่วมกันส่วนใหญ่จะปิดโดยค่าเริ่มต้นเนื่องจากความเสี่ยงด้านความปลอดภัย นอกจากนี้ในPHP6ที่allow_url_fopenตัวเลือกที่จะไม่อยู่และการทำงานทั้งหมดจะทำหน้าที่เป็นหากมีการตั้ง permenantly ปิด ดังนั้นนี่จึงเป็นวิธีที่แย่มากที่จะใช้
ตัวเลือกที่ดีที่สุดของคุณที่จะใช้หากคุณกำลังเข้าถึงไฟล์ผ่าน http คือ cURL