php.ini에서 추가 확장이 활성화되면 PHP 스크립트가 CLI 매개변수를 읽을 수 없습니다.

php.ini에서 추가 확장이 활성화되면 PHP 스크립트가 CLI 매개변수를 읽을 수 없습니다.

올바른 StackExchange에 게시하고 있기를 바랍니다.

PHP CLI를 사용하면서 매우 이상한 문제에 직면했습니다. 저는 Symfony 프레임워크를 사용하고 있으며 /etc/php5/cli/php.ini.

긴 기사보다 다음을 시청해 보세요.


1/ 일반 출력, 확장 없음

app/console doctrine:schema:update

Nothing to update - your database is already in sync with the current entity metadata.

→ 확인 참고: 앱/콘솔은 shellbang이 포함된 PHP 스크립트입니다.

app/console doctrine:schema:update --force

Nothing to update - your database is already in sync with the current entity metadata.

→ 확인( --forcePHP가 스크립트에 전달한 Symfony 옵션입니다)


2/ PHP에 두 가지 확장 기능 추가

php.ini를 편집합니다 sudo vim /etc/php5/cli/php.ini. 두 줄을 추가합니다.

extension=cairo.so
extension=php_gtk2.so

이러한 확장은 완벽하게 작동합니다. 경고도 없고 오류도 없습니다.


3/ PHP가 "충돌"했습니다. 관련 없는 두 개의 확장이 방금 추가되었습니다.

app/console doctrine:schema:update

Nothing to update - your database is already in sync with the current entity metadata.

→ 확인... 하지만:

app/console doctrine:schema:update --force

PHP Fatal error:  Option inconnue --force in Unknown on line 0
Could not startup.

→ 뭐?심포니의 잘못은 아닙니다... 참고: 프랑스어만을 의미합니다 Option inconnue.Unknown option

다른 명령, Symfony 명령 또는 독립형 PHP 스크립트에 동일한 효과가 있습니다.


결론적으로:이제 PHP에는 호출된 PHP 스크립트에 옵션을 전달하는 이상한 방법이 있습니다.

저도 php앞에 올려놨는데 app/console별 변화가 없네요. php.ini에서 확장 기능을 주석 처리하거나 삭제하면 모든 것이 잘 작동합니다. 이 두 줄만 관련됩니다.

편집: PHP를 5.5.12에서 5.6.3으로 업그레이드했는데 동일한 문제가 발생했습니다.

답변1

저는 Linux에서 PHP 5.6.1(cli)을 실행하고 있으며 drush를 사용하려고 할 때 똑같은 문제에 직면했습니다. PHP cli 스크립트를 실행할 때마다 다음이 수신됩니다.

PHP 치명적인 오류: 알 수 없는 옵션 --whatever-option-you-have

간단한 스크립트를 직접 만들었는지 확인하려면 다음을 수행하세요.

#!/usr/bin/env php
<?php
echo ("Test");

php.ini에서 "php_gtk2.so"를 제거하면 오류가 사라졌습니다.

이 문제는 php_gtk2.so 또는 여기에 추가한 확장에서만 발생합니까? cairo.so를 떠나면 동일한 오류가 발생합니까?

이것은 PHP의 정말 이상한 동작입니다!

관련 정보