2011-10-05 3 views
18

WordPress 플러그인을 작성하는 방법을 배우고 있습니다. 일부 데이터를 XML 파일에 작성하는 데 도움이 필요합니다. 나는 나의 로컬 머신, MAMP를 실행중인 Mac에있다. 나는 PHP 5.2.13을 가지고있다. 내 플러그인, 나는이있어 :PHP fopen() 오류 : 스트림을 열지 못했습니다 : 사용 권한이 거부되었습니다.

Warning: fopen(markers.xml) [function.fopen]: failed to open stream: Permission denied in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 73

Warning: fwrite(): supplied argument is not a valid stream resource in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 75

Warning: fclose(): supplied argument is not a valid stream resource in /Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php on line 76

나는 $의 file_handle 라인의 절대 경로를 사용하여 시도 : http://my_site/wp-content/plugins/my_plugin_folder/markers.xml

$file_handle = fopen('markers.xml', 'w'); 
$stringdata = "Test Info"; 
fwrite($file_handle, $stringdata); 
fclose($file_handle); 

위 실행하면 나에게 다음과 같은 오류를 제공합니다. 그러나, 그것은 작동하지 않았다.

또한 다음과 같이 markers.xml에 대한 사용 권한을 변경 시도 :

(나) : 읽기 & 쓰기 (알 수없는) 만 모두 읽기 : 읽기 & 쓰기

을 어떤 이유로, 내 맥은 내게 (알려지지 않은) Read &을 쓰도록 내버려 두지 않을 것이다. 차이가 있는지 확실하지 않습니다. 파일을 마우스 오른쪽 버튼으로 클릭하고 '정보 입수'를 선택하여 사용 권한을 변경했습니다. 은 phpinfo()에서

는, 내가있어 :

"등록 된 PHP 스트림 HTTPS, FTPS, compress.zlib, compress.bzip2, PHP, 파일, 데이터, HTTP, FTP"

은인가 문제를 일으키는 WordPress 설정? 또는 PHP 문제일까요?

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

감사합니다.

+0

의 사용 가능한 복제 [PHP - 스트림을 열지 못했습니다 : 아니 그런 파일 또는 디렉토리] (http://stackoverflow.com/questions/36577020/php-failed-to-open-stream-no-such-file-or-directory) –

답변

26

관리자 권한을 변경해야 할 수 있습니다. Mac에서 터미널을 연 다음 markers.xml이있는 디렉토리를 엽니 다. 다음을 입력하십시오.

sudo chmod 777 markers.xml 

암호를 묻는 메시지가 나타날 수 있습니다. 또한 전체 액세스를 허용하지 않는 디렉토리 일 수도 있습니다. WordPress에 익숙하지 않아 mysite 디렉토리로 이동하는 각 디렉토리의 권한을 변경해야 할 수도 있습니다. 당신이 당신의 php.ini 파일에 액세스 할 수있는 경우

+0

안녕하세요 @ 크리스, 메시지 주셔서 감사합니다. markers.xml을 777로 설정했지만 여전히 오류가 발생합니다. mysite로 이동하는 디렉토리를 변경하면 보안 문제가 발생하지 않을까요? 어떤 충고? 고맙습니다. – Laxmidi

+0

안녕하세요 @ 크리스, 나는 한 수준 위로 777로 chmod를 바 꾸었습니다. 필자는 호스트의 절대 경로가 아닌 로컬 시스템에서 절대 경로를 사용했습니다. 이제 작동합니다! 고맙습니다. – Laxmidi

+0

고맙습니다! D – cwiggo

-3

[function.fopen]: failed to open stream

, FOPEN을 가능하게하려고합니다. 각각의 라인을 찾아 "ON"으로 설정하십시오 : & 경우에 WP 예를 들어, 로컬 호스트/워드 프레스/php.ini 파일에 function.fopen :

allow_url_fopen = off 
should bee this 
allow_url_fopen = On 

And add this line below it: 
allow_url_include = off 
should bee this 
allow_url_include = on 
+3

이 답변은 완전한 난센스입니다. 문제를 해결하는 대신 보안 허점을 소개합니다. 질문을 철저히 읽었다면 로컬 파일을 열어 보았을 것입니다 : fopen ('markers.xml', 'w'); 하지만 allow_url_fopen = On은 원격 파일을 열 때만 필요합니다! 예를 들어 fopen ('http://example.com/....xml'); http://www.antary.de/2011/05/26/php-curl-als-alternative-fuer-allow_url_fopen을 참조하십시오. – Elmue