해결된 질문
작성
·
432
2
안녕하세요.
Program execution 강의 내용 중 proc_open() 함수를 다루는 과정에서
실행시 오류가 출력되어 질문드립니다.
먼저, 몇가지 이미지를 먼저 첨부해드리겠습니다. (학습 디렉토리: ~/Workspace/PHP/vscode/php-study/lang)
1) lang/programExecution/process.php
2) lang/readline/readline.php
3) process.php 실행 결과
4) lang 하위 디렉토리 퍼미션(쓰기, 읽기, 실행 권한)
process.php 실행시
첫 번째 줄의 에러 메시지는 Stream을 생성할 수 없어서 에러가 출력된 것 같으며
이후 에러 메시지들은 $readStream, $writeStream에 해당하는 값들이 NULL이기 때문에
핸들러 리소스를 생성하지 못하는 이슈로 인한 에러로 보입니다.
proc_open() 함수의 사용법에 대해 검색을 해보아도 해결을 할 수 없었기에
혹시 작업 경로에 해당하는 디렉토리들의 퍼미션 문제인지도 확인해 보았으나, 아니었습니다.
첫 번째 에러 메시지가 출력되는 원인을 정확히 알고 싶습니다.
+ 추가적인 질문입니다. 에러 보고(Error reporting) 강의 내용에서 웹 서버를 띄우고,
강제로 Error을 생성하였을 때 강사님과는 다르게 화면과 Console Log에 Stack trace 부분이 제외된 Error log가 출력됩니다.
php.ini 설정을 변경을 해줘야하는지, 아니면 Xdebug와 같은 디버깅 툴을 추가로 설치해야 하는지 궁금합니다.
1) 강의 화면
2) 작성자 화면
[학습 환경]
O/S : Mac OSX Catalina
PHP version : 7.4.10 (cli) (built: Sep 3 2020 18:21:42) ( NTS )
답변 2
1
안녕하세요! 답변이 늦었군요. 맥에서 돌려보진 않았지만 테스트를 대강 해보았습니다.
아래의 코드와 비교해보십시오. 무엇이 다른가요? 혹시 파이프의 세번째 요소의 __DIR__ 다음에 . 이 아닌 , 가 있으시지 않으신가요?! 코드를 보니 그러한 오탈자가 있는 것을 보았습니다. 스트림을 여는 것에 실패하였다. 여러 이유가 있어서 정확하게 짚어버리긴 어려울테지요. 예상하신대로 권한 문제일 수도 있겠지만, 해당 문제는 오탈자의 문제로 특정할 수 있습니다.
사실은 오탈자라는 아주 단순한 이유 때문입니다. 저도 그런 적이 많으니 코드를 잘 살펴보십시오!
2. 이것은 php.ini 에서 html_errors = On 옵션을 살펴보시기 바랍니다.
0