>  기사  >  백엔드 개발  >  exec - PHP 시스템 함수는 간단한 명령을 호출할 수 있지만 옥타브 스크립트를 실행할 수 없습니까?

exec - PHP 시스템 함수는 간단한 명령을 호출할 수 있지만 옥타브 스크립트를 실행할 수 없습니까?

WBOY
WBOY원래의
2016-08-29 08:50:491130검색

문제 설명:

octave는 matlab 구문과 호환되는 GNU 오픈 소스 과학 컴퓨팅 소프트웨어입니다. 옥타브 스크립트를 작성했는데 #!/usr/bin/octave
시작 부분에서 인터프리터로 옥타브를 지정하고 이 스크립트를 명령줄에서 직접 실행하면 원하는 이미지가 생성될 수 있습니다. 즉, ./octavedemo.m arg1 arg2...

을 사용하세요.

이제 shell_exec()와 같은 PHP 시스템 함수를 사용하여 이 명령을 실행하려고 하는데 작동하지 않습니다.
권한 문제가 있는지 테스트하기 위해 shell_exec()를 사용하여 간단한 ls -l 및 기타 명령을 실행해 보았는데 성공했습니다.

<code>$test = shell_exec("ls -l");
echo $test;</code>

js는 콘솔에서 결과를 받아 출력할 수 있으므로 시스템 기능 실행 권한에는 문제가 되지 않습니다.

그럼 다른 상황이 원인이 되었는지 묻고 싶습니다.
이미지 생성 속도가 느려서 너무 오래 걸리나요? php.ini에서 max_excution_time을 600으로 설정했는데 이 정도면 충분합니다.
아니면 단순한 텍스트와 달리 이미지가 너무 커서 이렇게 큰 크기로 생성할 수 없는 걸까요?

경험을 제공해 주시면 정말 감사하겠습니다!

업데이트(해결됨):

원래는 Apache의 기본 html 디렉터리에 새 데모 디렉터리를 만든 다음 이 디렉터리에 php 및 기타 파일을 배치했습니다. 그런 다음 이 디렉터리에 들어가서 모든 파일에 대해 chmod 777 작업을 수행했습니다.
이제 데모 디렉터리에 777 권한을 부여해 보면 문제가 해결될 것입니다. 이는 읽기 및 쓰기 권한을 부여하지 않으면 이 디렉터리에 파일을 생성할 수 없는 이유입니다.
시간을 낭비하지 않으려면 각 단계의 논리에 대해 더 명확하게 생각해야 한다는 사실이 입증되었습니다. 답변해주신 분들께 감사드립니다!

답글 내용:

문제 설명:

octave는 matlab 구문과 호환되는 GNU 오픈 소스 과학 컴퓨팅 소프트웨어입니다. 옥타브 스크립트를 작성했는데 #!/usr/bin/octave
시작 부분에서 인터프리터로 옥타브를 지정하고 이 스크립트를 명령줄에서 직접 실행하면 원하는 이미지가 생성될 수 있습니다. 즉, ./octavedemo.m arg1 arg2...

을 사용하세요.

이제 shell_exec()와 같은 PHP 시스템 함수를 사용하여 이 명령을 실행하려고 하는데 작동하지 않습니다.
권한 문제가 있는지 테스트하기 위해 shell_exec()를 사용하여 간단한 ls -l 및 기타 명령을 실행해 보았는데 성공했습니다.

<code>$test = shell_exec("ls -l");
echo $test;</code>

js는 콘솔에서 결과를 받아 출력할 수 있으므로 시스템 기능 실행 권한에는 문제가 되지 않습니다.

그럼 다른 상황이 원인이었는지 묻고 싶습니다.
이미지 생성 속도가 느려서 너무 오래 걸리나요? php.ini에서 max_excution_time을 600으로 설정했는데 이 정도면 충분합니다.
아니면 단순한 텍스트와 달리 이미지가 너무 커서 이렇게 큰 크기로 생성할 수 없는 걸까요?

경험을 제공해 주시면 정말 감사하겠습니다!

업데이트(해결됨):

원래는 Apache의 기본 html 디렉터리에 새 데모 디렉터리를 만든 다음 이 디렉터리에 php 및 기타 파일을 배치했습니다. 그런 다음 이 디렉터리에 들어가서 모든 파일에 대해 chmod 777 작업을 수행했습니다.
이제 데모 디렉터리에 777 권한을 부여해 보면 문제가 해결될 것입니다. 이는 읽기 및 쓰기 권한을 부여하지 않으면 이 디렉터리에 파일을 생성할 수 없는 이유입니다.
시간을 낭비하지 않으려면 각 단계의 논리에 대해 더 명확하게 생각해야 한다는 사실이 입증되었습니다. 답변해주신 분들께 감사드립니다!

PHP의 shell_exec 메소드는 웹 사용자 권한을 사용합니다. 스크립트에 웹 사용자로서 실행 권한이 있는지 확인하세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.