2012-01-20 3 views
0

Android 앱에서 내 서버 (학교 서버)의 PHP 파일로 데이터를 보내려고하지만 몇 가지 문제가 있습니다. 나는 SimpleHelix을 통해 내 자신의 호스팅 공간이, 나는 잘 데이터를 보낼 수 있었다,하지만 난 내 학교의 서버를 사용하려고하면 PHP 프로그램은 다음과 같은 오류 반환 :Android에서 PHP 로의 HTTP POST가 특정 도메인에서 작동하지 않습니다.

Notice: Undefined index: message in /home/alespurg/test_good.php on line 4 

Warning: file_put_contents(androidmessages.html) [function.file-put-contents]: failed to open stream: Permission denied in /home/alespurg/test_good.php on line 9 

Warning: file_get_contents(androidmessages.html) [function.file-get-contents]: failed to open stream: No such file or directory in /home/alespurg/test_good.php on line 11 

모든 내가 변경된를 내 Java 파일은 게시에 필요한 URL입니다. 게시물이 통과하지 못하도록 내 학교의 서버에 제한이있을 수 있습니까? 폴더와 파일에 대한 사용 권한을 모두 확인했는데 모두 775입니다. 다시 프로그램이 작동한다는 것을 알았습니다. 서버에 문제가 있습니다. 나는 그 도메인의 IP 주소를 사용하지 않았다. 학교의 서버에서 찾지 못했습니다.

편집 :

<?php 
// get the "message" variable from the post request 
// this is the data coming from the Android app 
$message=$_POST["message"]; 

// specify the file where we will save the contents of the variable message 
$filename="androidmessages.html"; 
// write (append) the data to the file 
file_put_contents($filename,$message."<br />",FILE_APPEND); 
// load the contents of the file to a variable 
$androidmessages=file_get_contents($filename); 
// display the contents of the variable (which has the contents of the file) 
echo $androidmessages; 
?> 
+0

현실적인 도움을주기 위해 게시하는 오류와 내용을 생성하는 PHP 코드를 확인해야합니다. – Charles

+0

원본 코드에 PHP 코드를 추가했습니다. 감사합니다 – mkyong

+0

오, 어떻게 간단한 코드를 사랑해! 게시 된 데이터를 표시 할 수 있습니까? 데이터에'message' 키가 누락 된 것 같습니다 ... – Charles

답변

1

권한이있는 경우 의미 775이 웹 서버 프로세스 중 하나 (1)/홈/alespurg/을 소유 한 사용자 (하지 않은 경우 또는 (2)/home/alespurg/ (해당되지는 않음)을 소유 한 그룹의 구성원이면 디렉토리에 쓸 수 없습니다.

웹 서버 프로세스가 /home/alespurg/에 대한 소유권 그룹의 소유자 또는 소유자입니까? 아파치 또는 아무도 : 아무도

나는 보통 아파치로 실행하는 웹 서버는 아파치입니다 가정합니다. 디렉토리 구조로 판단하면 /home/alespurg/alespurg : alespurg 또는 일부 파생물로 소유하고있을 가능성이 큽니다. 이 같은 일을 할 필요가있는 경우에


부칙

아파치 프로세스는 정말 적절한 장소가 아니다. 당신은 알지 못할 수도 있지만 서버의 쉘 환경에서 PHP 스크립트를 작성하고 실행할 수 있습니다. 해당 디렉토리에 쓸 적절한 사용자로 로그인 한 . 또한 필요한 경우 CRON을 통해 실행할 수 있습니다. 웹 서버 프로세스는 불필요한 중개인입니다.

+0

나는 아직도 조금 혼란 스럽다. 더 설명해 주시겠습니까? 여기서 어떤 단계를 밟아야합니까? – mkyong

+0

chmod 시스템은 다음과 같이 작동합니다. ** 4-2-1 ** 여기서 4는 읽기 비트이고 2는 쓰기 비트이며 1은 실행 비트입니다. 엔티티가 특정 파일 또는 디렉토리에 대해 갖는 사용 권한을 결정하기 위해 3 개의 숫자를 함께 추가합니다. ** 775 **의 세 숫자는 Owner-Group-World의 액세스 수준을 나타내므로 7은 4 + 2 + 1 = 전체 읽기/쓰기/실행 액세스를 의미합니다. 아파치가 실제 소유자 또는 소유자와 동일한 그룹의 구성원이 아닌 경우 세 번째 (세계) 범주로 분류됩니다.따라서 4 + 1 = 5는 아파치가 해당 디렉토리에 ** 2 ** (쓰기) 권한이 없음을 의미합니다. – rdlowrey

+0

Apache는 디렉토리에 대한 쓰기 권한으로 서버를 돌아 다니거나 나쁜 일이 발생할 수 있습니다. 코드가 다른 서버에서 작동했다면 아파치 프로세스가 사용자/그룹 구성원으로 문제의 디렉토리에 대한 쓰기 권한을 가졌거나 디렉토리가 777으로'chmod '되었다는 것을 의미합니다. 디렉토리를 chmod 할 수 있습니다 디렉토리를 아파치에 쓸 수있게하려면 */home/alespurg * 경로를 사용하십시오. – rdlowrey

관련 문제