문제
나는 붙어 있고 손이 필요하다. 누군가가 도울 수 있기를 바랍니다.
이 코드에서 왜 내가 "실패한 쓰기"를 받고 있는지 아는 사람이 있습니까?
$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에 이것을 게시 할 것입니다.
제휴하지 않습니다 StackOverflow