문제

나는 붙어 있고 손이 필요하다. 누군가가 도울 수 있기를 바랍니다.

이 코드에서 왜 내가 "실패한 쓰기"를 받고 있는지 아는 사람이 있습니까?

$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);

미리 감사드립니다.

도움이 되었습니까?

해결책

파일 핸들을 만들 때 OR 연산자를 사용하면 작업에 따라 부울 값을 반환합니다. 따라서 $ write_handle에는 파일 자원 대신 true 또는 false가 포함됩니다. 글쓰기를위한 파일을 열고 성공했음을 테스트하는 더 좋은 방법은 다음과 같습니다.

$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 플래그, 모든 쓰기마다 파일을 비워집니다.

다른 팁

나는 그것이 어디에서나 사용되는 것을 보았지만 문제는 ||입니다. 다이 ( "Coul n't Open users_v2!");

먼저 추가 :

error_reporting(E_ALL);

PHP가 오류에 대해보고하는 것을 확인합니다.

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

유효하지 않은 스트림 핸들 오류와 파일 핸들이 1입니다. 반환 된 파일 핸들은 "resource id #x"입니다.

라인 변경 :

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

그리고 당신의 코드는 잘 작동합니다. 지금 php.net에 이것을 게시 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top