سؤال

أنا عالق وفي حاجة إلى يد. آمل أن بعض واحدة يمكن أن تساعد؟

أي شخص لديه أي فكرة لماذا أحصل على "فشل الكتابة" في هذا الرمز؟

$write_file = "/usr/home/public_html/php/users_v2.sql";
$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");

if (is_writeable($write_file)) {
    if ($write_handle === FALSE) echo 'Failed handle?!';
    if (fwrite($write_handle, "Hi\n") === FALSE) echo "Failed write!\n";
}

fclose($write_handle);

شكرا مقدما.

هل كانت مفيدة؟

المحلول

باستخدام أو المشغل عند إنشاء مؤشر الملفات الخاص بك، فإنك تقوم بإرجاع قيمة منطقية اعتمادا على العملية. لذلك سوف تحتوي $ Write_handle على صواب أو خطأ، بدلا من مورد الملفات. وسيلة أفضل لفتح ملف للكتابة والاختبار أنه كان ناجحا سيكون هذا:

$write_handle = fopen($write_file, 'w');
if ($write_handle === false)
{
    die('Could not open file ' . $write_file);
}

بالإضافة إلى ذلك، يمكنك استخدام file_put_contents() وظيفة التي تعالج fopen ()، fwrite () و fclose () لك. أوصي هذا فقط إذا كنت تقوم بتنفيذ واحد فقط اكتب لنفس الملف، حيث سيكون الكثير من النفقات العامة، وما لم تمر FILE_APPEND العلم، وسوف تفريغ الملف لكل كتابة.

نصائح أخرى

لقد رأيت أنه يستخدم في كل مكان ولكن المشكلة هي || يموت ("كول لا يفتح المستخدمين_v2!")؛

أولا أضفت:

error_reporting(E_ALL);

لمعرفة ما تقارير PHP عن الأخطاء.

$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!");
fclose($write_handle);

إرجاع خطأ مقبض دفق غير صالح ومقبض ملف 1. بدونه مقبض الملفات المرتجع هو "معرف المورد #x".

تغيير الخط إلى:

$write_handle = fopen($write_file, "w"); // || die("Couln't open users_v2!");

وكود الخاص بك يعمل بشكل جيد. سأذهب نشر هذا على php.net الآن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top